目录

一、验证与门

二、验证与非门

三、验证二选一数据选择器

四、验证2-4译码器

五、验证半加器

六、验证全加器

0、初始化定义

1、第一个半加器

2、第二个半加器

3、得到最终进位Co

代码


0决定与,1决定或

一、验证与门

只要有一个按键按下,结果即为低电平,灯亮。

assign led1 = key1&key2;        //与门(只要有一个按键按下,则结果为低电平,灯亮)
//验证与门、与非门
module my_and           //my_and:文件名称
(
//1、配置输入输出变量
input wire key1,        //输入引脚key1
input wire key2,        //输入引脚key2
output wire led1,       //输出引脚led1
output wire led2        //输出引脚led2
);//2、变量赋值
assign led1 = key1&key2;       //与门(只要有一个按键按下,则结果为低电平,灯亮)
//assign led2 = !(key1&key2);  //与非门(没有按键按下,全为1,结果取反,为0,,灯亮)endmodule

二、验证与非门

两个数相与,取反。

只有无按键按下的情况,两个按键都为1,相与结果为1,再取反为0,最终的电平点亮灯。(有任何一个按键按下,灯都不会亮了)

assign led2 = !(key1&key2); //与非门(没有按键按下,全为1,结果取反,为0,,灯亮)
//验证与门、与非门
module my_and           //my_and:文件名称
(
//1、配置输入输出变量
input wire key1,        //输入引脚key1
input wire key2,        //输入引脚key2
output wire led1,       //输出引脚led1
output wire led2        //输出引脚led2
);//2、变量赋值
//assign led1 = key1&key2;     //与门(只要有一个按键按下,则结果为低电平,灯亮)
assign led2 = !(key1&key2);    //与非门(没有按键按下,全为1,结果取反,为0,,灯亮)endmodule

三、验证二选一数据选择器

sl是筛选端,a和b是两个输入端

//二选一数据选择器
module my_and(led1, key1, key2, key3);input wire key1, key2, key3;  //输入:a、b、s
output reg led1;                    //输出(y/out)always@(key1, key2, key3)
begin //使能按下if(!key3)led1 = key1;elseled1 = key2;
end
endmodule

四、验证2-4译码器

2-4:通过1+2个按键和4个led灯来实现。

首先进行使能。(使能按键E)

两个按键四种状态:00、01、10、11

按键00:1(led1亮)
按键01:2(led2亮)
按键10:3(led3亮)
按键11:4(led4亮)

//2-4线译码器
module my_and(key, led, E);input wire[1:0] key;             //定义两个key数组
input wire E;                       //定义使能按键
output reg[3:0] led=4'b1111;  //定义四个led数组(赋初值1)(熄灭led)always@(key)//使能按键按下if(!E)begincase(key)2'b00: led = 4'b0111;   //按键00:1(led1亮)2'b01: led = 4'b1011; //按键01:2(led2亮)2'b10: led = 4'b1101; //按键10:3(led3亮)2'b11: led = 4'b1110; //按键11:4(led4亮)default: led = 4'b1111;    //led全灭(出错)endcaseendendmodule

五、验证半加器

半加器:对两个输入数据位相加,输出一个结果位和进位。

结果:S = A ^ B(S=A异或B)

进位:C = A & B(C=A与B)

定义2个按键输入:A、B(分别代表两个输入A、B)

定义2个LED输出:S、C(分别代表本位结果S、进位C)

//验证半加器
module my_and(A, B, S, C);input wire A, B;      //定义两个输入
output wire S, C;       //定义结果、进位输出assign S = A^B;     //本位结果S=A异或B
//二进制只有0+1 或 1+0 才有结果1;否则1+1或者0+0,当前位都为0assign C = A&B;      //进位C=A与B
//二进制只有1+1 才会出现进位endmodule

六、验证全加器

全加器:两个半加器连接而成

标注了1级和2级半加器:

 (红色标记是容易连错的地方)

A、B、CI为输入,结果位S、进位CO为输出

利用模块实例化,分别实例化两个半加器,最终组合为全加器

0、初始化定义

定义输入输出引脚变量。

//全加器(两个半加器连接)
module my_and(A, B, Ci, S, Co);//变量定义
input wire A, B, Ci;        //输入1、输入2、低端进位(输入3)
output wire S, Co;      //结果输出位、总进位

1、第一个半加器

两个按键key1、key2分别代表A、B,作为两个输入。 最终得到的结果位作为A2(第二个,即后面的那个半加器),得到进位作为C1

注:模块实例化,输入是传入(赋值进去),输出是传出来(被赋值)

半加器half_adder只需把.v的文件放入文件夹即可(前面编写过)。

//模块实例化(此处采样端口关联)
//第一个半加器
half_adder half_adder1(.A(A), .B(B), .S(A2),      .C(C1));
//第一个半加器:                输入1  输入2  结果位(输出)   进位(输出)

2、第二个半加器

        A2是第一个的S结果位 ,作为第二个半加器的输入1,低端进位Ci对应的是按键key3,作为第二个半加器的输入2。分别得到最终的结果S、第二个半加器进位C2

//第二个半加器
half_adder half_adder2(.A(A2), .B(Ci),      .S(S),      .C(C2));
//第二个半加器:                输入1  输入2(低端进位) 结果位(输出)  进位(输出)

3、得到最终进位Co

第二个半加器那里已经得到了最终的S结果位,所以现在只需要再处理最终的进位Co即可

把两个半加器的进位C1和C2组合(或)一下,即可得到最终进位Co:

//总进位
assign Co = C1 | C2;

代码

//全加器(两个半加器连接)
module my_and(A, B, Ci, S, Co);//变量定义
input wire A, B, Ci;        //输入1、输入2、低端进位(输入3)
output wire S, Co;      //结果输出位、总进位//模块实例化(此处采样端口关联)
//第一个半加器
half_adder half_adder1(.A(A), .B(B), .S(A2),      .C(C1));
//第一个半加器:                输入1  输入2  结果位(输出)   进位(输出)//第二个半加器
half_adder half_adder2(.A(A2), .B(Ci),      .S(S),      .C(C2));
//第二个半加器:                输入1  输入2(低端进位) 结果位(输出)  进位(输出)//注:和输入端口相关联时,传入值(赋值进去);
//      和输出端口相关联时,传出值(赋值出来)。//总进位
assign Co = C1 | C2;endmodule

FPGA(3)验证数字逻辑(与门、与非门、二选一数据选择器、2-4译码器、半加器、全加器)相关推荐

  1. Quartus II使用说明(Verilog HDL二选一数据选择器 )

    <可编程数字逻辑电路设计>课程中Quartus II软件的使用说明 VHDL和Verilog HDL不一样. 1.新建文件夹,里面包含5个子文件夹(doc/img/prj/rtl/test ...

  2. Verilog二选一数据选择器

    //二选一数据选择器module mux2_1(a0,a1,s,f) input a0,a1,s; output f;//默认是wire(线)变量 assign f=(s)?a1:a0;//assig ...

  3. # Quartusll采用IF设计二选一数据选择器及仿真

    Quartusll采用IF设计二选一数据选择器及仿真 软件Quartusll9.1 没有软件的小可爱先来领取资源哈~~(9版本以后就不自带仿真) 链接:https://pan.baidu.com/s/ ...

  4. 跟着小梅哥初学FPGA ,vivdao开发平台,二选一多路选择器。

    今天正式开始自己的FPGA自学之路,由于导师项目需要,xilinx ZYNQ 7系列的板子,vivado软件平台进行开发,所以自己也直接学习vivado软件开发的板子,我自己学习所用的开发板是xili ...

  5. FPGA(1)--VHDL--6选1数据选择器

    文章目录 一.实验目的 二.实验内容 三.实验设计 四.实验结果及仿真 五.实验思考与总结 一.实验目的 掌握用VHDL语句进行组合电路设计的方法,并熟悉程序的编译.调试与波形图的仿真. 二.实验内容 ...

  6. Verilog门级实现二选一多路选择器

    使用门级电路实现1位二选一多路选择器. 通过真值表设计电路: 使用Verilog门级实现: module MUX2X1(A0,A1,S,Y);//命名 input A0,A1,S;//输入,全部为1位 ...

  7. 数字逻辑触发器(二) 集成触发器

    集成触发器 接上文:数字逻辑触发器(一)https://blog.csdn.net/weixin_44279771/article/details/106048062 一.维持阻塞触发器 1.其解决空 ...

  8. 手机号码验证--区号验证--电话号验证--分机号验证--手机号和固定电话二选一--用户名只能为汉字或者英文请--邮箱账号...

    // 手机号码验证jQuery.validator.addMethod("isPhoneNumber", function(value, element) {var tel = / ...

  9. 数字逻辑---头歌实训作业---多路选择器设计与应用(Logisim)

    第1关:2选1选择器设计 如有任何不解或者想要最终实验代码,可评论区喊话哦,希望我的答案对你有帮助,点个关注再走吧,感谢!!! 本关卡最终答案: 任务描述 本关任务:在Logisim中绘制2选1多路选 ...

最新文章

  1. 又拍云SSL证书全新上线,提供一站式HTTPS安全解决方案
  2. TCP粘包问题 转自CSDN
  3. leetcode算法题--二叉搜索树的第k大节点
  4. Mac下搭建jekyll环境
  5. 【开源】对基于图像背景的字体生成、人体姿势预测、关键点检测、超分辨率等探讨...
  6. spring 通过id 查询数据_Spring 数据初始 H2 后进行数据查询提示 Schema not found 错误...
  7. 【经典回顾】YouTube 深度学习推荐系统的十大工程问题(附论文下载链接)
  8. 360创始人周鸿祎曾这样告诫年轻人
  9. 讲讲金融业务(一)--自助结算终端POS
  10. iphone socket讲解
  11. AD检查步骤及其顺序
  12. 【安全牛学习笔记】端口扫描
  13. 职场中,什么样的人最容易升职?
  14. 张一鸣:我的大学四年收获及工作感悟
  15. excel单元格内容拆分_Excel | 单元格内容换行方法
  16. Mac桌面个性贴纸Desktop Stickers
  17. 自主研发国产高端企业云服务器,浪潮商用机器如何聚沙成塔?
  18. Illumina测序原理
  19. 中山大学曾兆阳_实习派 | 曾兆阳: “宝藏男孩”的进阶之路
  20. WPS Office 2019 v11.8.2专业增强版+教程

热门文章

  1. Ubuntu 系统 卸载OpenJDK 8
  2. Android 动态广播与静态广播
  3. David与Vincent的博弈游戏[树型DP]
  4. Ubuntu 安装 OpenCV4 详细步骤
  5. RabbitMQ 入门系列(10)— RabbitMQ 消息持久化、不丢失消息
  6. Go 学习笔记(27)— type 关键字(类型定义、类型别名、类型查询、定义接口、定义结构体)
  7. 文献阅读方法 如何阅读英文文献 - 施一公(转)
  8. hbase RPCServer源码分析
  9. android录像增加时间记录(源码里修改)
  10. Java学习笔记---字符类型