![EDA技术_组合逻辑电路设计_Verilog_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-6/25/693005e6-9563-4078-a939-1de03e0feb78/693005e6-9563-4078-a939-1de03e0feb781.gif)
![EDA技术_组合逻辑电路设计_Verilog_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-6/25/693005e6-9563-4078-a939-1de03e0feb78/693005e6-9563-4078-a939-1de03e0feb782.gif)
![EDA技术_组合逻辑电路设计_Verilog_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-6/25/693005e6-9563-4078-a939-1de03e0feb78/693005e6-9563-4078-a939-1de03e0feb783.gif)
![EDA技术_组合逻辑电路设计_Verilog_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-6/25/693005e6-9563-4078-a939-1de03e0feb78/693005e6-9563-4078-a939-1de03e0feb784.gif)
![EDA技术_组合逻辑电路设计_Verilog_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-6/25/693005e6-9563-4078-a939-1de03e0feb78/693005e6-9563-4078-a939-1de03e0feb785.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、n数字电路数字电路n组合电路组合电路n与非门等与非门等n时序电路时序电路nD触发器触发器电路输出完全依赖电路输入电路输出在一定程度不依赖电路输入运算运算记忆记忆第第3 3章章 组合逻辑电路设计组合逻辑电路设计1组合电路时序时序电路实现功能使功能有序23.3 Verilog 过程及译码电路过程及译码电路nAlways 过程语句过程语句nalways定义的过程块是一个电路,定义的过程块是一个电路,电路电路从上电开始就会一直执行;从上电开始就会一直执行;n (从代码一开始就执行,执行完了再回(从代码一开始就执行,执行完了再回到过程块的最初来执行,周而复始,不到过程块的最初来执行,周而复始,不会停止,
2、直到代码执行完毕)会停止,直到代码执行完毕) 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 : $dis
3、play (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 clock or posedge rst
4、) if (rst) count = 0;else begin : COUNT while (enable) begin count = count + 1; disable COUNT; end end endmodule3.3 过程中的阻塞赋值与过程中的阻塞赋值与 非阻塞赋值非阻塞赋值 n阻塞式阻塞式 (blocking) 的操作符为的操作符为 “ = ”n 非阻塞式非阻塞式 (non-blocking)的操作符)的操作符为为 “ = ”n 阻塞赋值和非阻塞赋值的基本区别是:阻塞赋值和非阻塞赋值的基本区别是:阻塞赋值是顺序执行语句,而非阻塞赋阻塞赋值是顺序执行语句,而非阻塞赋值是并行执行语
5、句。两种语句的含义不值是并行执行语句。两种语句的含义不同,建模的应用也就不同。同,建模的应用也就不同。 3.3 对比对比module top(clk,a, c);input a,clk;output c;reg c,b;always ( posedge clk )beginb=a;C=b;endendmodulemodule top(clk,a,c);input a,clk;output c;reg c,b;always ( posedge clk )beginb=a;c=b;endendmodule3.3译码器电路译码器电路输入输入输出输出A BY0 Y1 Y2 Y30 01 0 0 00
6、10 1 0 01 00 0 1 01 10 0 0 12 2线线4 4线译码器真值表线译码器真值表00mBAY 33mABY 22mBAY 11mBAY 逻辑函数:逻辑函数:2线线4线译码器电路线译码器电路3-8译码器电路译码器电路重温设计过程重温设计过程n1. 文本编辑文本编辑n2. 设定器件设定器件n3. 输入管脚输入管脚n4. 综合、布局布线综合、布局布线n5. 设定下载端口设定下载端口n6. 下载下载n能不能自己实现能不能自己实现3-8译码器电路?译码器电路?3.3实训实训 3-8译码器译码器1、建立工程、建立工程2、使用、使用Verilog语言设计语言设计module 3_8yim
7、aqi (data_in,data_out); input2:0 data_in; output7:0 data_out; reg 7:0 data_out;always(data_in)begin case(data_in) 3b000:data_out=8b0000_0001; 3b001:data_out=8b0000_0010; 3b010:data_out=8b0000_0100; 3b011:data_out=8b0000_1000; 3b100:data_out=8b0001_0000; 3b101:data_out=8b0010_0000; 3b110:data_out=8b0
8、100_0000; 3b111:data_out=8b1000_0000; endcase endendmodule3.4 三态门电路三态门电路输入信号双向信号输出信号rwco_dataout_datain_data1co_dataxco_data0out_dataout_dataout_data三态门电路结构单元三态门电路结构单元 如果使能端G为低电平,取值为0时,三态门电路与B点之间连接的两个MOS管都关断,B在芯片内部的连接处于高阻态,也就是为Z,此时外部信号可以通过B送到C,作为输入状态。当G为低高平,取值为1时,三态门电路与B连接的两个MOS管中可以有一个管子导通,B的取值和A一致,
9、而此时外部对B不能进行信号驱动,否则就会出现短路。 CMOS传输门三态门电路传输门三态门电路 3.5 数码管显示数码管显示3.5 例:在数码管上显示例:在数码管上显示2module seg7(data_out); output6:0 data_out; assign data_out=7b 1011011endmodule 3.5 七段译码器结构七段译码器结构七段LED数码管显示电路in0ag3.5 BCD数段码对应表数段码对应表七段数码管显示电路输入七段数码管显示电路输入七段数码管显示电七段数码管显示电路输出路输出LED显示显示字形字形in3 in2 in1 in0gfedcba 0 0 0
10、 001111110 0 0 0 100001101 0 0 1 010110112 0 0 1 110011113 0 1 0 011001104 0 1 0 111011015 0 1 1 011111006 0 1 1 100001117 1 0 0 011111118 1 0 0 1110011193.5 代码代码module qiduan(data_in;/七段数码管显示电路的输入,对应图的七段数码管显示电路的输入,对应图的in3-in0,in3对应高位对应高位data_out);/七段数码管显示电路的输出,对应图中的七段数码管显示电路的输出,对应图中的g-a,g对应高位对应高位in
11、put3:0 data_in;/输入输出端口定义输入输出端口定义output6:0 data_out;reg6:0 data_out;/使用使用always建模组合逻辑需要定义输出为寄存器建模组合逻辑需要定义输出为寄存器always(data_in) /输入为输入为data_inbegin case(data_in)/输入的不同情况输入的不同情况 4b0000: data_out = 7b0111111; / 0 4b0001: data_out = 7b0000110; / 1 4b0010: data_out = 7b1011011; / 2 4b0011: data_out = 7b10
12、01111; / 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,当输入为其他值时,当输入为其他值时,输出有效,为全输出有效,为全0 endcaseende
13、ndmodule3.5 实例实例2:用数码管显示:用数码管显示9527需要轮流打开4个数码管,每个数码管显示1/4的时间,由于视觉暂留效应,就好像显示4个不同的数字设计思路:设计思路:1.打开scan0的时候,在abcdefg线上赋值“9”2.打开scan1的时候,在abcdefg线上赋值“5”3.打开scan2的时候,在abcdefg线上赋值“2”4.打开scan3的时候,在abcdefg线上赋值“7”首先:设计首先:设计SCAN信号信号n首先要降低扫描速度,生成一个大约为首先要降低扫描速度,生成一个大约为0.01s-0.1s的时钟的时钟n利用这个时钟信号产生一个利用这个时钟信号产生一个sc
14、an信号如信号如下:下:reg1:0 state; reg3:0 scan;/注意要用注意要用always就必就必须是须是regalways(posedge clk_div)state=state+1b1;always (state)case (state)2b00 : scan=4b0001;2b01 : scan =4b0010;2b10 : scan =4b0100;2b11 : scan =4b1000;default: scan =4b0000;endcase分不同的时间把分不同的时间把9、5、2、7放到放到bin上面去上面去reg3:0 bin;/不在不在always里面赋值就用里
15、面赋值就用wire,否则用,否则用regalways(state)case (state)2b00 : bin=4d9;2b01 : bin=4d5;2b10 : bin=4d2;2b11 : bin=4d7;default: bin=4d0;endcase再对再对9527从二进制到从二进制到abdcdefg译码译码reg6:0 abcdefg;always(bin) begin case(bin) 4b0000: abcdefg= 7b0111111; . . default: abcdefg= 7b0000000; endcase3.5 实例实例3:计数牌子:计数牌子n任务分析:任务分析:
16、 设计一个计数牌子,能从设计一个计数牌子,能从0000计数计数到到9999,每隔,每隔1秒钟跳动一下。通过复秒钟跳动一下。通过复位可以把系统清零为位可以把系统清零为0000【涉及涉及】动态数码管显示,复位,分频电路等动态数码管显示,复位,分频电路等设计思路:设计思路:1.内部所有数据都是内部所有数据都是2进制的,所以需要设进制的,所以需要设计计4个个4位位2进制的进制的reg,分别对应显示的,分别对应显示的4个数字,再通过动态扫描电路送到个数字,再通过动态扫描电路送到LED上面去显示。上面去显示。2.利用利用1秒的时钟,构建秒的时钟,构建“个、十、百、千个、十、百、千”位的变换规律位的变换规律
17、 设计模块设计模块1:分频电路:分频电路n代码:略代码:略1.产生一个产生一个1秒的时钟秒的时钟:clk_1s2.产生一个产生一个0.01秒的时钟(为了动态显示秒的时钟(为了动态显示使用)使用):clk_div设计模块设计模块2:计数器:计数器reg3:0 gewei; /各位数各位数always(posedge clk_1s)if(reset=1b1) gewei=4b0;else if(gewei=4d9) gewei=4b0; else gewei=gewei+1b1; reg3:0 shiwei; /十位数十位数always(posedge clk_1s)if(reset=1b1) s
18、hiwei=4b0;else if(gewei=4d9) begin if(shiwei=4d9); shiwei=4b0; else shiwei=shiwei+1b1;endreg3:0 baiwei; /百位数百位数always(posedge clk_1s)if(reset=1b1) baiwei=4b0;else if(gewei=4d9)&(shiwei=4d9) begin if(baiwei=4d9); baiwei=4b0; else baiwei=baiwei+1b1;endreg3:0 qianwei; /千位数千位数always(posedge clk_1s)if(re
19、set=1b1) qianwei=4b0;else if(gewei=4d9)&(shiwei=4d9)&(baiwei=4d9) begin if(qianwei=4d9); qianwei=4b0; else qianwei=shiwei+1b1;end3.5实例实例4:动态译码显示:动态译码显示n回想一下:回想一下:我们是如何把我们是如何把9527显示出来的?显示出来的?设计设计SCAN信号信号n首先要降低扫描速度,生成一个大约为首先要降低扫描速度,生成一个大约为0.01s-0.1s的时钟的时钟n利用这个时钟信号产生一个利用这个时钟信号产生一个scan信号如信号如下:下:reg1:0 state; reg3:0 scan;/注意要用注意要用always就必就必须是须是regalways(posedge clk_div)state=stats+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 怀化2024年湖南中坡国家森林公园管理处选调2人笔试历年参考题库附带答案详解
- 2025年模切烫印两用机项目可行性研究报告
- 2025至2031年中国微调双灯行业投资前景及策略咨询研究报告
- 2025至2031年中国安全控制芯片行业投资前景及策略咨询研究报告
- 2025年塑料四辊压延机项目可行性研究报告
- 2025至2031年中国乳胶漆调色机行业投资前景及策略咨询研究报告
- 2025年人体工学型电脑台项目可行性研究报告
- 2025至2030年鼓式制动器项目投资价值分析报告
- 2025至2030年钢板清洗剂项目投资价值分析报告
- 2025至2030年中国金属自攻螺钉数据监测研究报告
- 2023年上海市秋考语文真题试卷含答案(整理版)
- 2023年心理咨询师之心理咨询师基础知识考试题库附完整答案【有一套】
- 路缘石安装一级安全交底
- 一级建造师继续教育最全题库及答案(新)
- LS/T 1226-2022粮库智能通风控制系统
- 直线加速器专项施工方案
- 联苯二氯苄生产工艺及产排污分析
- 储能设备项目采购供应质量管理方案
- 美国房地产市场特征、框架与周期演变
- 光伏发电工程施工组织设计施工工程光伏发电工程光伏发电施工组织设计
- 民政局离婚协议书模板(4篇)
评论
0/150
提交评论