- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 组合逻辑电路设计讨论主题:3.1组合逻辑基础及并行语句三人表决器3.2加法器电路 一位加法器3.3 verilog过程译码器原理3-8译码器3.4数码管显示电路 七段显示译码器3.1 组合逻辑电路 表决器3.1 组合逻辑电路对比3.1 组合逻辑电路定义组合逻辑含义: 电路任一时刻的输出状态只决定于该时刻各输入状态的组合,而与电路的原状态无关。组合电路就是由门电路组合而成,电路中没有记忆单元,没有反馈通路。3.1 组合逻辑建模方法建模思路: 用语言表述出来:针对输入,总有确定的输出,输入一变化,输出就随之变化建模规范: 1.过程(进程)之外,本来就是并行,直接建模 2.过程(进程)之内:a.所有输入变化立刻变化。b.针对输入,输出有确定值 (绝对真经!!)3.1 组合逻辑verilog描述module select(f,a,b,s); output f; input a,b,s; assign f=(a(~s))|(bs);endmodule 3.1组合逻辑补充互补CMOS电路 3.1 二输入CMOS与非门电路 3.1二输入端CMOS或非门电路 3.1二输入CMOS异或门电路 3.2理解Verilog的并行语句一般的程序设计语言是处理器按照顺序去执行的一些语句,硬件描述语言却是描述一个物理上可以客观存在的实际电路的语言。二者最本质的区别是Verilog硬件描述语言有并行语句。并行语句是硬件描述语言的基本特征,可以说正是因为并行语句的存在,才使其成为了真正的硬件描述语言。Verilog需要顺序语句 第一是很多时序器件本身就是和时间相关的,比如D触发器,其原理就是“每当时钟上升延来临之后就把输入端的数据存入,并且放在输出端口,直到下一个时钟来临为止”。如果使用语言来描述一个器件符合上述原理,很明显需要用到时间先后的语法,而且在很多场合,使用顺序执行的语句可以有效的简化描述语言的数量,基于这个原因,描述有些电路结构需要使用顺序执行的语句。但是即使用顺序执行的语句描述出来了这种器件,也是在底层和其他器件并行处理的。第二个原因就是为了仿真验证, 3.2 加法器电路真值表a1a2bc3.2 加法器电路初识Verilogmodule adder (a, b, c); input[1:0] a, b; output[2:0] c; assign c=a+b; endmodule3.2 半加器能对两个一位二进制数相加,求得其和值及进位的逻辑电路称为半加器。半加器的特点是:只考虑两个一位二进制数的相加,而不考虑来自低位进位的运算电路,称为半加器。任务7中设计的一位加法器级为半加器。3.2 全加器一位二进制数相加不仅要考虑本位的加数与被加数,还要考虑低位的进位信号,而输出包括本位和以及向高位的进位信号,这就是通常所说的全加器。 3.2全加器 3.2 多位加法器 3.2比较 module adder (a, b, c);input[1:0] a, b;output[2:0] c;reg[2:0] c; always@(a,b)beginc=a+b;endendmodule3.2任务:自己使用Verilog编写一个4位数加4位数的加法器。3.3 Verilog 过程及译码电路Always 过程语句always定义的过程块是一个电路,电路从上电开始就会一直执行; (从代码一开始就执行,执行完了再回到过程块的最初来执行,周而复始,不会停止,直到代码执行完毕) 3.3 常用过程语句 if else// “begin” 和 “end”就好比C语言中的“{”和“}”.if (enable = = 1b1) begin data = 10; // 十进制赋值 address = 16hDEAD; //十六进制 wr_enable = 1b1; //二进制 end else begin data = 32b0; wr_enable = 1b0; address = address + 1; end3.3过程语句casecase(address) 0 : $display (It is 11:40PM); 1 : $display (I am feeling sleepy); 2 : $display (Let me skip this tutorial); default : $display (Need to complete); endcase3.3过程语句while module counter (clock,rst,enable,count); input clock, rst, enable; output [3:0] count; reg [3:0] count; always @ (posedge cloc
文档评论(0)