题目:输入一个8bit数,输出其中1的个数,只能使用1bit全加器
一、思路
全加器(full_adder):是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器,一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。
一位全加器的真值表如下:假设Ai,Bi,Ci-1是输入信号,s1和c1是输出信号,并且有Ai是被加数,Bi是加数,相邻低位来的进位数是Ci-1,输出本位和是Si,向相邻高位进位数是Ci
针对全加器的特性,设计思路如下(图中a,b为加数;cin为前一位进位;sum为输出本位和;cout为相邻高位进位数):
最终结果用4位二进制表示,至于结果的每一位来源可以通过经过cout端口的次数来确定,即0次(全从sum端口出)为最低位,依次类推。
二、代码
最终结果用4位二进制表示,至于结果的每一位来源可以通过经过cout端口的次数来确定,即0次(全从sum端口出)为最低位,依次类推。
代码如下:
module f_add(a,b,ci,s,co);input a;input b;input ci;output s;output co;assign {co,s}=a+b+ci;
endmodule
module count_1_add(data_in,data_out);input [7:0]data_in;output [3:0]data_out;wire s0,s1,s2,s3,s4,s5,s6;wire c0,c1,c2,c3,c4,c5,c6;f_add f_add0(.a(data_in[0]),.b(data_in[1]),.ci(data_in[2]),.s(s0),.co(c0));f_add f_add1(.a(data_in[3]),.b(data_in[4]),.ci(data_in[5]),.s(s1),.co(c1));f_add f_add2(.a(s0),.b(s1),.ci(data_in[6]),.s(s2),.co(c2));f_add f_add3(.a(s2),.b(data_in[7]),.ci(1'b0),.s(s3),.co(c3));f_add f_add4(.a(c0),.b(c1),.ci(c2),.s(s4),.co(c4));f_add f_add5(.a(s4),.b(c3),.ci(1'b0),.s(s5),.co(c5));f_add f_add6(.a(c5),.b(c4),.ci(1'b0),.s(s6),.co(c6));assign data_out={c6,s6,s5,s3};endmodule
2.测试文件
代码如下:
`timescale 1ns/1ns
module tb;reg [7:0]data_in;wire [3:0]data_out;reg clk;count_1_add count_1_add(.data_in(data_in),.data_out(data_out));initial clk=0;always #1 clk=~clk;initial begindata_in=8'b1101_0010;#10;data_in=8'b1001_0000;end
endmodule
仿真结果
可以看到用了七个全加器,点开其中一个,可以看到一个全加器由两个半加器和一个或门组成
时序:
题目:输入一个8bit数,输出其中1的个数,只能使用1bit全加器相关推荐
- 题目:输入一个8bit数,输出其中1的个数。如果只能使用1bit全加 器,最少需要几个?
题目:输入一个8bit数,输出其中1的个数.如果只能使用1bit全加器,最少需要几个? 7个1bit全加器 module number_one(input clk,input rst_n,input ...
- 输入一个8bit数,输出其中1的个数。如果只能使用1bit全加器,最少需要几个,请使用verilog进行描述?(附verilog代码)
回答:7个. 解释:全加器是full_adder,实现两个二进制相加求和的过程.其中,Ai是被加数,Bi是加数,相邻低位来的进位数是Ci-1,输出本位和是Si,向相邻高位进位数是Ci. 图1:全加器的 ...
- python从键盘上输入一个字符串并输出该字符串_python练习:输入一个字符串,输出该字符串中字符的所有组合...
题目 输入一个字符串,输出该字符串中字符的所有组合.例如abc,它的组合有a.b.c.ab.ac.bc.abc. 第一种思路 使用递归求解,可以考虑长度为n的字符串中m个字符的组合,设为C(n, m) ...
- python依次输入输出字符串_Python练习:输入一个字符串并输出该字符串中所有字符的组合,python...
题目 输入一个字符串,输出该字符串中字符的所有组合.例如abc,它的组合有a.b.c.ab.ac.bc.abc. 第一种思路 使用递归求解,可以考虑长度为n的字符串中m个字符的组合,设为C(n, m) ...
- JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)
题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...
- 经典Java题目:输入一个数字,输出它的大写汉字(阿拉伯数字转汉字)
写在前面 无意间看到一个Java题目,觉得挺有意思,就拿出来和大家分享: 输入一个数字,输出它的大写汉字. 就像这样: 这算是一个有趣的题目了.但是早前我Java基础特别差就没能实现它. 当然,这次我 ...
- 写一个函数,输入一个十六进制数,输出相应的十进制数
写一个函数,输入一个十六进制数,输出相应的十进制数(C语言) 题目要求:如标题 思路: 十六进制数为:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14) ...
- c语言学习-输入一个十进制数,输出其对应的八进制数据
输入一个小写字母,输出其对应的大写字母 程序流程图: 代码: #include<stdio.h> void main() {Int a; printf("输入一个十进制数:\n& ...
最新文章
- WinDbg加载不同版本CLR
- OAuth 2.0攻击方法及案例总结
- 电为啥要分交流、直流?
- python基础教程--代码集合(上)
- 你要「老婆」不要?谷歌程序员20行代码把二次元「老婆」带到现实世界
- checkbox设置三种状态 qt_CheckBox复选框用法及实例代码
- 内核中dump_stack的实现原理(3) —— 内核函数printk的实现
- bubbo调用Failed to invoke remote method异常解决
- Macaron的注入struct
- 注册双击Ctrl键 (DLL版)
- CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件【转载】
- 计算经纬度距离工具类
- 计算机网络纠错码,纠错码
- Java实现多个文件生成压缩包下载
- Provisional headers are shown 解决问题
- 百度AI 开放平台 - 各大AI 开放平台开放能力解读和分析,技术的应用场景,技术前景
- AdaBoost 自适应增强 简单易懂 by hch
- 百度浏览器的隐私安全问题分析
- 打印图案系列(菱形、X形、箭形、空心正方形)
- java中getTime()
热门文章
- EL表达式中获取 list集合长度
- Windows 2003 变慢原因分析及解决
- vSphere6.7中WindowsServer2012r2虚拟机磁盘扩容
- 一文搞懂 Cocos Creator 3.x 坐标转换!建议收藏
- Mybatis框架创建逆向工程步骤
- C语言 switch多分支语句实现根据等级划分分数段
- GIS--矢量数据,栅格数据,切片,瓦片,金字塔的概念
- Go语言经典库使用分析(六)| Negroni 中间件(二)
- CANVAS LMS开源系统
- 服务器的2.5寸硬盘怎么安装,安装简单,使用方便,我的2.5寸硬盘我做主