一、思路

全加器(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全加器相关推荐

  1. 题目:输入一个8bit数,输出其中1的个数。如果只能使用1bit全加 器,最少需要几个?

    题目:输入一个8bit数,输出其中1的个数.如果只能使用1bit全加器,最少需要几个? 7个1bit全加器 module number_one(input clk,input rst_n,input ...

  2. 输入一个8bit数,输出其中1的个数。如果只能使用1bit全加器,最少需要几个,请使用verilog进行描述?(附verilog代码)

    回答:7个. 解释:全加器是full_adder,实现两个二进制相加求和的过程.其中,Ai是被加数,Bi是加数,相邻低位来的进位数是Ci-1,输出本位和是Si,向相邻高位进位数是Ci. 图1:全加器的 ...

  3. python从键盘上输入一个字符串并输出该字符串_python练习:输入一个字符串,输出该字符串中字符的所有组合...

    题目 输入一个字符串,输出该字符串中字符的所有组合.例如abc,它的组合有a.b.c.ab.ac.bc.abc. 第一种思路 使用递归求解,可以考虑长度为n的字符串中m个字符的组合,设为C(n, m) ...

  4. python依次输入输出字符串_Python练习:输入一个字符串并输出该字符串中所有字符的组合,python...

    题目 输入一个字符串,输出该字符串中字符的所有组合.例如abc,它的组合有a.b.c.ab.ac.bc.abc. 第一种思路 使用递归求解,可以考虑长度为n的字符串中m个字符的组合,设为C(n, m) ...

  5. JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)

    题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...

  6. 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示

    转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...

  7. 经典Java题目:输入一个数字,输出它的大写汉字(阿拉伯数字转汉字)

    写在前面 无意间看到一个Java题目,觉得挺有意思,就拿出来和大家分享: 输入一个数字,输出它的大写汉字. 就像这样: 这算是一个有趣的题目了.但是早前我Java基础特别差就没能实现它. 当然,这次我 ...

  8. 写一个函数,输入一个十六进制数,输出相应的十进制数

    写一个函数,输入一个十六进制数,输出相应的十进制数(C语言) 题目要求:如标题 思路: 十六进制数为:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14) ...

  9. c语言学习-输入一个十进制数,输出其对应的八进制数据

    输入一个小写字母,输出其对应的大写字母 程序流程图: 代码: #include<stdio.h> void main() {Int a; printf("输入一个十进制数:\n& ...

最新文章

  1. WinDbg加载不同版本CLR
  2. OAuth 2.0攻击方法及案例总结
  3. 电为啥要分交流、直流?
  4. python基础教程--代码集合(上)
  5. 你要「老婆」不要?谷歌程序员20行代码把二次元「老婆」带到现实世界
  6. checkbox设置三种状态 qt_CheckBox复选框用法及实例代码
  7. 内核中dump_stack的实现原理(3) —— 内核函数printk的实现
  8. bubbo调用Failed to invoke remote method异常解决
  9. Macaron的注入struct
  10. 注册双击Ctrl键 (DLL版)
  11. CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件【转载】
  12. 计算经纬度距离工具类
  13. 计算机网络纠错码,纠错码
  14. Java实现多个文件生成压缩包下载
  15. Provisional headers are shown 解决问题
  16. 百度AI 开放平台 - 各大AI 开放平台开放能力解读和分析,技术的应用场景,技术前景
  17. AdaBoost 自适应增强 简单易懂 by hch
  18. 百度浏览器的隐私安全问题分析
  19. 打印图案系列(菱形、X形、箭形、空心正方形)
  20. java中getTime()

热门文章

  1. EL表达式中获取 list集合长度
  2. Windows 2003 变慢原因分析及解决
  3. vSphere6.7中WindowsServer2012r2虚拟机磁盘扩容
  4. 一文搞懂 Cocos Creator 3.x 坐标转换!建议收藏
  5. Mybatis框架创建逆向工程步骤
  6. C语言 switch多分支语句实现根据等级划分分数段
  7. GIS--矢量数据,栅格数据,切片,瓦片,金字塔的概念
  8. Go语言经典库使用分析(六)| Negroni 中间件(二)
  9. CANVAS LMS开源系统
  10. 服务器的2.5寸硬盘怎么安装,安装简单,使用方便,我的2.5寸硬盘我做主