三章组合逻辑电路设计ppt课件.ppt
《三章组合逻辑电路设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《三章组合逻辑电路设计ppt课件.ppt(86页珍藏版)》请在三一文库上搜索。
1、第3章 组合逻辑电路设计,讨论主题:,3.1组合逻辑基础及并行语句三人表决器 3.2加法器电路 一位加法器 3.3 verilog过程译码器原理 3-8译码器 3.4数码管显示电路 七段显示译码器,3.1 组合逻辑电路 表决器,3.1 组合逻辑电路对比,3.1 组合逻辑电路定义,组合逻辑含义: 电路任一时刻的输出状态只决定于该时刻各输入状态的组合,而与电路的原状态无关。组合电路就是由门电路组合而成,电路中没有记忆单元,没有反馈通路。,3.1 组合逻辑建模方法,建模思路: 用语言表述出来:针对输入,总有确定的输出,输入一变化,输出就随之变化 建模规范: 1.过程(进程)之外,本来就是并行,直接建
2、模 2.过程(进程)之内:a.所有输入变化立刻变化。b.针对输入,输出有确定值 (绝对真经!),3.1 组合逻辑verilog描述,module select(f,a,b,s); output f; input a,b,s; assign f=(a endmodule,3.1组合逻辑补充互补CMOS电路,3.1 二输入CMOS与非门电路,3.1二输入端CMOS或非门电路,3.1二输入CMOS异或门电路,3.2理解Verilog的并行语句,一般的程序设计语言是处理器按照顺序去执行的一些语句,硬件描述语言却是描述一个物理上可以客观存在的实际电路的语言。二者最本质的区别是Verilog硬件描述语言有
3、并行语句。 并行语句是硬件描述语言的基本特征,可以说正是因为并行语句的存在,才使其成为了真正的硬件描述语言。,Verilog需要顺序语句,第一是很多时序器件本身就是和时间相关的,比如D触发器,其原理就是“每当时钟上升延来临之后就把输入端的数据存入,并且放在输出端口,直到下一个时钟来临为止”。如果使用语言来描述一个器件符合上述原理,很明显需要用到时间先后的语法,而且在很多场合,使用顺序执行的语句可以有效的简化描述语言的数量,基于这个原因,描述有些电路结构需要使用顺序执行的语句。但是即使用顺序执行的语句描述出来了这种器件,也是在底层和其他器件并行处理的。 第二个原因就是为了仿真验证,,3.2 加法
4、器电路,真值表,3.2 加法器电路,初识Verilog module adder (a, b, c); input1:0 a, b; output2:0 c; assign c=a+b; endmodule,3.2 半加器,能对两个一位二进制数相加,求得其和值及进位的逻辑电路称为半加器。半加器的特点是:只考虑两个一位二进制数的相加,而不考虑来自低位进位的运算电路,称为半加器。任务7中设计的一位加法器级为半加器。,3.2 全加器,一位二进制数相加不仅要考虑本位的加数与被加数,还要考虑低位的进位信号,而输出包括本位和以及向高位的进位信号,这就是通常所说的全加器。,3.2全加器,3.2 多位加法器,
5、3.2 比较,module adder (a, b, c); input1:0 a, b; output2:0 c; reg2:0 c; always(a,b) begin c=a+b; end endmodule,3.2任务:,自己使用Verilog编写一个4位数加4位数的加法器。,3.3 Verilog 过程及译码电路,Always 过程语句 always定义的过程块是一个电路,电路从上电开始就会一直执行; (从代码一开始就执行,执行完了再回到过程块的最初来执行,周而复始,不会停止,直到代码执行完毕),3.3 常用过程语句 if else,/ “begin” 和 “end”就好比C语言中的
6、“”和“”. if (enable = = 1b1) begin data = 10; / 十进制赋值 address = 16hDEAD; /十六进制 wr_enable = 1b1; /二进制 end else begin data = 32b0; wr_enable = 1b0; address = address + 1; end,3.3过程语句case,case(address) 0 : $display (“It is 11:40PM“); 1 : $display (“I am feeling sleepy“); 2 : $display (“Let me skip this t
7、utorial“); default : $display (“Need to complete“); endcase,3.3过程语句while,module counter (clock,rst,enable,count); input clock, rst, enable; output 3:0 count; reg 3:0 count; always (posedge clock or posedge rst) if (rst) begin count = 0; end else begin : COUNT while (enable) begin count = count + 1;
8、disable COUNT; end end endmodule,3.3过程中的阻塞赋值与非阻塞赋值,阻塞式 (blocking) 的操作符为 “ = ” 非阻塞式 (non-blocking)的操作符为 “ = ” 阻塞赋值和非阻塞赋值的基本区别是:阻塞赋值是顺序执行语句,而非阻塞赋值是并行执行语句。两种语句的含义不同,建模的应用也就不同。,3.3 对比,module top(clk,a, c); input a,clk; output c; reg c,b; always ( posedge clk ) begin b=a; =b; end endmodule,module top(clk
9、,a,c); input a,clk; output c; reg c,b; always ( posedge clk ) begin b=a; c=b; end endmodule,3.3译码器电路,2线4线译码器真值表,逻辑函数:,2线4线译码器电路,3-8译码器电路,重温设计过程,1. 文本编辑 2. 设定器件 3. 输入管脚 4. 综合、布局布线 5. 设定下载端口 6. 下载,3.3实训 3-8译码器,8-3译码器,能不能自己实现8-3译码器电路?,3.5 三态门电路,三态门电路结构单元,如果使能端G为低电平,取值为0时,三态门电路与B点之间连接的两个MOS管都关断,B在芯片内部的连
10、接处于高阻态,也就是为Z,此时外部信号可以通过B送到C,作为输入状态。当G为低高平,取值为1时,三态门电路与B连接的两个MOS管中可以有一个管子导通,B的取值和A一致,而此时外部对B不能进行信号驱动,否则就会出现短路。,CMOS传输门三态门电路,3.4 数码管显示,3.4 练习一 数码管上显示2,module seg7(data_out); output7:0 data_out; assign data_out=8b 1011011,3.4 七段译码器结构,3.4表格显示,3.4 代码,module qiduan( data_in,/七段数码管显示电路的输入,对应图2.1.4中的in3-in0
11、,in3对应输入的高位 data_out);/七段数码管显示电路的输出,对应图2.1.4中的g-a,g对应输出的高位 input3:0 data_in;/输入输出端口定义 output6:0 data_out; reg6:0 data_out;/使用always建模组合逻辑需要定义输出为寄存器 always(data_in) /输入为data_in begin case(data_in)/输入的不同情况 4b0000: data_out = 7b0111111; / 0 4b0001: data_out = 7b0000110; / 1 4b0010: data_out = 7b1011011
12、; / 2 4b0011: data_out = 7b1001111; / 3 4b0100: data_out = 7b1100110; / 4 4b0101: data_out = 7b1101101; / 5 4b0110: data_out = 7b1111100; / 6 4b0111: data_out = 7b0000111; / 7 4b1000: data_out = 7b1111111; / 8 4b1001: data_out = 7b1100111; / 9 default: data_out = 7b0000000; /default,当输入为其他值时,输出有效,为全
13、0 endcase end endmodule,3.4实训显示小任务:,使用七段数码管显示一个3的数字。,module SEG7 ( abcdefg, scan ); wire 3:0 bin; output3:0 scan; output6:0 abcdefg; reg 6:0 abcdefg;,assign scan=4b1111; always(bin) begin case(bin) 4b0000: abcdefg= 7b0111111; . . default: abcdefg= 7b0000000; endcase end endmodule,3.4任务:用数码管显示9527,需要
14、轮流打开4个数码管,每个数码管显示1/4的时间,由于视觉暂留效应,就好像显示4个不同的数字,设计思路: 1.打开scan0的时候,在abcdefg线上赋值“9” 2.打开scan1的时候,在abcdefg线上赋值“5” 3.打开scan2的时候,在abcdefg线上赋值“2” 4.打开scan3的时候,在abcdefg线上赋值“7”,设计SCAN信号,首先要降低扫描速度,生成一个大约为0.01s-0.1s的时钟 利用这个时钟信号产生一个scan信号如下: reg1:0 state; reg3:0 scan;/注意要用always就必须是reg always(posedge clk_div) s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组合 逻辑 电路设计 ppt 课件
链接地址:https://www.31doc.com/p-2626659.html