数字系统分析第五部分资料_第1页
数字系统分析第五部分资料_第2页
数字系统分析第五部分资料_第3页
数字系统分析第五部分资料_第4页
数字系统分析第五部分资料_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、五、五、综合实例综合实例综合实例讲解综合实例讲解实例一:实例一:8位累加器设计位累加器设计实例二:数字频率计设计实例二:数字频率计设计实例三:交通信号灯控制电路设计实例三:交通信号灯控制电路设计实例四:自动售饮料机的设计实例四:自动售饮料机的设计对多层次结构电路的描述可以采用纯文本方式,也可以用图形和文本输入相结合的方式。综合实例一:综合实例一:8位累加器设计位累加器设计累加器:对输入的8位数据不断的进行相加运算。设计方法:采用层次结构进行设计。多层次结构电路的设计多层次结构电路的设计8 8位累加器位累加器ACCACC设计过程:设计过程:第第1步:进行层次设计规划步:进行层次设计规划 全加器:

2、负责对不断输入的数据和进位进行累加寄存器:负责暂存累加的和,并把累加的和反馈到累加器输入端,以进行下一次的累加。1) 8位全加器模块位全加器模块add8.vmodule add8(sum,cout,a,b,cin);output7:0 sum;output cout;input7:0a,b;input cin;assign cout,sum=a+b+cin;endmodule2) 8位寄存器模块位寄存器模块reg8.vmodule reg8(qout,in,clk,clr);output7:0 qout;input7:0 in;input clk,clr;reg7:0 qout;always

3、(posedge clk or posedge clr)beginif(clr) qout=0; else qout=in;endendmodule 第第2步:进行底层设计步:进行底层设计 第第3步:顶层设计描述步:顶层设计描述 1)原理图法:原理图法: acc.gdf2)纯文本描述纯文本描述A:include “add8.v”include “reg8.v”module acc(accout,cout,accin,cin,clk,clr);output7:0 accout;output cout;input7:0 accin;input cin,clk,clr;wire7:0 sum;add

4、8 A(sum,cout, accin,accout,cin);/调用add8子模块reg8 R(accout,sum,clk,clr);/调用reg8子模块endmodule2)纯文本描述纯文本描述B:module acc(accout,cout,accin,cin,clk,clr);output7:0 accout; output cout; input7:0 accin; input cin,clk,clr;wire7:0 sum;add8 A(sum,cout, accin,accout,cin);/调用add8子模块reg8 R(accout,sum,clk,clr);/调用reg8

5、子模块endmodulemodule add8(sum,cout,a,b,cin);output7:0 sum; output cout; input7:0a,b; input cin;assign cout,sum=a+b+cin;endmodulemodule reg8(qout,in,clk,clr);output7:0 qout;input7:0 in;input clk,clr;reg7:0 qout;always (posedge clk or posedge clr)beginif(clr) qout=0; else qout=in; endendmodule 仿真结果功能要求:

6、功能要求: 1)在单位时间1S里对被测信号的脉冲个数进行计数,记得的脉冲个数N即为信 号的频率。 2)每隔2S进行一次频率测量,每次测量开始时,能对计数模块进行清零。 3)能够将被测信号的频率在4个数码管(测量范围为:1HZ9999HZ )上显示出来,每次显示的时间为2S.综合实例二:综合实例二: 4位数字频率计位数字频率计一、模块划分控制模块计数模块锁存模块显示模块计数器计数器锁存器锁存器显示显示译码器译码器数字频率计BCD_BCD_七段数码显七段数码显示译码器示译码器BCD_BCD_七段数码显七段数码显示译码器示译码器BCD_BCD_七段数码显七段数码显示译码器示译码器BCD_BCD_七段

7、数码显七段数码显示译码器示译码器16位锁存器位锁存器1010进制计数器进制计数器1010进制计数器进制计数器1010进制计数器进制计数器1010进制计数器进制计数器被被测测信信号号CLK控制模块控制模块loadCount_clrCount_en基准时钟基准时钟系统复位信号系统复位信号enenenenclrclrclrclr控制模块:控制模块:T=1S计数计数锁存锁存计数计数清零清零0module ctrl(clk,rst,en,clr,load);input clk,rst; output en,clr,load;reg en,load;always (posedge clk)begin if

8、(rst) begin en=0;load=1;endelse begin en=en; load=en; end end assign clr=(clk)&load; endmodule控制模块程序:控制模块程序:计数器模块程序:计数器模块程序:module count10(out,cout,en,clr,clk);output3:0out;output cout;input en,clr,clk;reg3:0 out;always (posedge clk or posedge clr)begin if(clr) out=0;else if(en)begin if(out=9) o

9、ut=0;else out=out+1;endendassign cout=(out=9)&en)?1:0;endmodule锁存器模块程序:锁存器模块程序:module latch_16(qo,din,load);output15:0 qo;input15:0 din;input load;reg15:0 qo;always (posedge load)qo=din;endmodule显示译码器模块程序:显示译码器模块程序:module decode4_7(a,b,c,d,e,f,g,D);output a,b,c,d,e,f,g;input 3:0 D;reg a,b,c,d,e,

10、f,g;always (D) begin case(D)0:a,b,c,d,e,f,g=7b1111110;1:a,b,c,d,e,f,g=7b0110000;2:a,b,c,d,e,f,g=7b1101101;3:a,b,c,d,e,f,g=7b1111001;4:a,b,c,d,e,f,g=7b0110011;5:a,b,c,d,e,f,g=7b1011011;6:a,b,c,d,e,f,g=7b1011111;7:a,b,c,d,e,f,g=7b1110000;8:a,b,c,d,e,f,g=7b1111111;9:a,b,c,d,e,f,g=7b1111011;default:a,b,

11、c,d,e,f,g=7b0000000;endcaseendendmodule顶层模块设计:顶层模块设计:仿真:仿真:功能要求:功能要求:1)在十字路口的)在十字路口的A方向和方向和B方向各设红(方向各设红(R)、黄()、黄(Y)、绿()、绿(G)、左拐()、左拐(L)四盏灯。)四盏灯。2)四盏灯按合理的顺序亮灭(下页表所示)四盏灯按合理的顺序亮灭(下页表所示) 。3)A方向是主干路,车流量大,红、绿、黄、左拐灯亮的时间分别是:方向是主干路,车流量大,红、绿、黄、左拐灯亮的时间分别是:55s、 40s、5s、 15s。A红灯时间红灯时间=B绿灯时间绿灯时间+B黄灯时间黄灯时间*2+B左拐时间。

12、左拐时间。 B方向为次干道,红、绿、黄、左拐灯亮的时间分别是:方向为次干道,红、绿、黄、左拐灯亮的时间分别是:65s、 30s、5s、15s。 B红灯时间红灯时间=A绿灯时间绿灯时间+A黄灯时间黄灯时间*2+A左拐时间。左拐时间。综合实例三:综合实例三: 交通信号灯控制线路设计交通信号灯控制线路设计 交通灯控制器状态转换表交通灯控制器状态转换表A方向方向B方向方向G1Y1L1R1G2Y2L2R21000000101000001001000010100000100011000000101000001001000010100信号信号灯状灯状态转态转换示换示意图意图A方向方向(东西)(东西)B方方向

13、向(南北)(南北)一、程序结构总控制模块B方向倒计时及显示模块显示显示译码器译码器控制电路的起停控制电路的起停 赋初值赋初值B方向控制模块A方向倒计时及显示模块显示显示译码器译码器A方向控制模块信号定义与说明信号定义与说明输入信号:输入信号:CLK:系统同步时钟信号,1Hz。EN:系统使能信号,为1时,控制器开始工作。输出信号:输出信号:LAMPA:控制A方向四盏灯的工作状态,四位二进制数, LAMPA=0010 (LAMPA1=1)时,绿灯亮; LAMPA=0100 (LAMPA2=1)时,黄灯亮; LAMPA=0001 (LAMPA0=1)时,左拐灯亮; LAMPA=1000 (LAMPA

14、3=1)时,红灯亮。LAMPB:控制B方向四盏灯的工作状态,四位二进制数, LAMPB=0010 (LAMPB1=1)时,绿灯亮; LAMPB=0100 (LAMPB2=1)时,黄灯亮; LAMPB=0001 (LAMPB0=1)时,左拐灯亮; LAMPB=1000 (LAMPB3=1)时,红灯亮。ACOUNT:用于A方向的时间显示控制,8位,两位数码管。BCOUNT:用于B方向的时间显示控制,8位,两位数码管。module traffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT);output7:0 ACOUNT,BCOUNT;output3:0 LAMPA,LAM

15、PB;input CLK,EN;reg7:0 numa,numb; /两个方向剩余时间中间变量reg tempa,tempb; /reg2:0 counta,countb;reg7:0 ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;/各灯初始时间reg3:0 LAMPA,LAMPB;always (EN) if(!EN) begin /设置各灯的计数器初值,用十进制表示。 ared =8d55; ayellow=8d5; agreen=8d40; aleft=8d15; bred=8d65; byellow=8d5; bgreen=8d

16、30; bleft=8d15; endassign ACOUNT=numa;assign BCOUNT=numb;总控制模块总控制模块always (posedge CLK) begin if(EN) begin if(!tempa) begin tempa=1; case(counta) 0:begin numa=agreen; LAMPA=2;counta=1;end 1:begin numa=ayellow; LAMPA=4;counta=2;end 2:begin numa=aleft; LAMPA=1;counta=3;end 3:begin numa=ayellow; LAMPA=

17、4;counta=4;end 4:begin numa=ared; LAMPA=8;counta=0;end default:LAMPA1) if(numa3:0=0) begin numa3:0=4b1001;numa7:4=numa7:4-1;end else numa3:0=numa3:0-1; if(numa=2) tempa=0; end end else begin LAMPA=8;counta=0;end endA方向控制及倒计时显示模块方向控制及倒计时显示模块always (posedge CLK) begin if(EN) begin if(!tempb) begin tem

18、pb=1; case(countb) 0:begin numb=bred; LAMPB=8;countb=1;end 1:begin numb=bgreen; LAMPB=2;countb=2;end 2:begin numb=byellow; LAMPB=4;countb=3;end 3:begin numb=bleft; LAMPB=1;countb=4;end 4:begin numb=byellow; LAMPB=4;countb=0;end default: LAMPB1) if(numb3:0=0) begin numb3:0=4b1001;numb7:4=numb7:4-1;en

19、d else numb3:0=numb3:0-1; if(numb=2) tempb=0; end end else begin LAMPB=8;countb=0;end endendmoduleB方向控制及倒计时显示模块方向控制及倒计时显示模块状态仿真结果倒计时仿真结果功能要求:功能要求:1)每瓶饮料售价为2.5元,投币口可以投入5角硬币或1元硬币,实验时可以用两个按键代替。2)当累计投入2.5元硬币时,输出一瓶饮料 ,累计投入3元时,输出一瓶饮料同时找5角零钱。综合实例四:综合实例四: 自动售饮料机控制线路设计自动售饮料机控制线路设计设计思路:设计思路: 本题目属于时序逻辑问题,采用有限状

20、态机设计,使用case语句来描述各个状态之间的转移关系。信号定义与说明信号定义与说明输入信号:输入信号:clk:系统同步时钟信号。:系统同步时钟信号。reset:系统复位信号。:系统复位信号。half_dollar:代表投入代表投入5角硬币。角硬币。one_dollar:代表投入代表投入1元硬币。元硬币。输出信号:输出信号:half_out:表示找零信号。表示找零信号。dispense:表示机器售出一瓶饮料。表示机器售出一瓶饮料。collect:提示设币者取走饮料。提示设币者取走饮料。中间信号:中间信号:idle=0:投币的初始状态,即无钱状态。投币的初始状态,即无钱状态。half=1:代表累计投币代表累计投币0.5元。元。one=2:代表累计投币代表累计投币1元。元。two=3:代表累计投币代表累计投币1.5元。元。three=4:代表累计投币代表累计投币2元。元。0132QX1X0/Y1Y001/00状态转换图410/0001/0010/0001/0010/0001/0001/1001/1010/11X1:1元X0:5角Y1:输出饮料Y0:找零钱 module sell(one_dollar,half_dollar,collect,half_out,di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论