南昌大学eda实验报告_第1页
南昌大学eda实验报告_第2页
南昌大学eda实验报告_第3页
南昌大学eda实验报告_第4页
南昌大学eda实验报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、实 验 报 告课程名称: EDA技术实用教程 指导老师: 学生姓名: 学 号: 专业班级: 通信工程134班 2015年 12月 7 日目 录实验一、全加器设计实验实验二、模可变计数器设计实验实验三、序列信号发生和检测器设计实验实验四、交通灯控制器设计实验实验五、多功能数字钟设计实验实验六、出租车计费器设计实验本课程总结一、全加器设计实验(1) 实验目的1、 熟悉建立文件夹和建立工程的整个过程。2、 学会建立波形文件。3、 学会将文件下载到板子上。(2) 设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:1、利用书上的程序,完成实验目的,

2、实现两个一位二进制数的相加,并将进位输出。(3) 主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置 1套(4) 实验思路由于要用到例化语句,所以需要将文件都放在一个文件夹里然后创建工程。选择文件夹和名称。添加文件选择实验室用的芯片选择仿真工具半加器真值表如下ABSOCO0000011010101101其中A和B为输入信号,SO为和值输出,CO为进位输出。程序如下。module banjia(A,B,SO,CO); input A,B; output SO,CO; assign SO=AB; assign CO=A&B;Endmodule由真值表可得输入信

3、号A和B异或可作为和值输出,相与可作为进位输出。全加器真值表如下AinBinCinCoutSum0000001001100011101000101011101011011111ain和bin为输入信号,cin为进位信号与ain和bin一起相加,cout为进位出书,sum为和值输出。程序如下。module quanjia(ain,bin,cin,cout,sum); output cout,sum; input ain,bin,cin; wire net1,net2,net3; banjia U1(ain,bin,net1,net2); banjia U2(.A(net1),.SO(sum),.

4、B(cin),.CO(net3); or U3(cout,net2,net3);Endmodule这里用了例化语句调用了一个半加器的模块让ain与bin通过半加器的相加之后的和值net1作为一个输入信号再与进位信号cin相加作为和值sum,ain与bin相加产生的进位信号net2和ain与bin的和值net1与cin相加产生的进位信号net3相或作为整体的进位输出cout,便可完成真值表的要求。(5) 时序仿真添加文件添加引脚然后对输入信号进行赋值,赋值为周期性信号。编译后保存。仿真后效果如下将程序烧入板子如下(6) 实验总结因为这个是第一次进EDA实验室,对软件硬件都不了解。遇到很多的简单问

5、题,也就是操作上的不熟练。对照书本上的步骤一步一步操作,才能完成。真应该加强动手能力。通过这次实验理解了全加器的原理和例化语句的使用,初步对EDA实验产生了兴趣。二、模可变计数器设计(一) 实验目的1、 进一步熟悉实验装置和Quartus软件的使用;2、 进一步熟悉和掌握EDA设计流程;3、 学习简单组合、时序电路的EDA设计;4、 学习计数器中二进制码到BCD码的转换技巧;5、学习实验装置上数码管的输出方法。(二) 设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下:1、 设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自

6、行确定)的数,没按下时模为100-199之间(具体数值自行确定)的数;2、 计数结果用三位数码管十进制显示。(三) 主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置 1套(四) 实验思路总体程序如下module jishuqi (CLK,rst,M,SG,en,q,d);input CLK,rst,en;input M;output SG;reg7:0 cnt;reg clk1;reg7:0 SG;reg sel;output reg11:0 q;reg11:0 model;reg3:0 a;output reg d;wire3:0 gw,sw,bw;assig

7、n gw3:0=q3:0;assign sw3:0=q7:4; assign bw3:0=q11:8;always (M)if (M) model=12'b000000110000;else model=12'b000100000000; always (posedge CLK)begin cnt=cnt+1; if (cnt=200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; if (sel<2) sel=sel+1; else sel=0; endalways (posedge CLK or negedge

8、 rst)beginif(!rst)q=0;elseif(en) beginif(q<model)begin if (gw=9) begin q=q+7; if (sw=9) q=q+96; end else q=q+1; endelse q=0;end endalways (q)begin if(q<model) d<=0; else d<=1;endalways (sel) begin case (sel) 0: a=bw; 1: a=sw; 2: a=gw; default: a=0; endcase case (a)0:SG<=8'b0011111

9、1; 1:SG<=8'b00000110;2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101;6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; default: SG=8'b11111111; endcase endendmodule分频模块分频模块由时钟频率的分频

10、作为计数脉冲,每200个系统脉冲有一个技术脉冲,同时可以利用系统脉冲进行循环选择SEL来进行循环扫码。程序如下 always (posedge CLK)begin cnt=cnt+1; if (cnt=200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; if (sel<2) sel=sel+1; else sel=0; 选择模块由M选择,M为1时模是30,M为0时模为100。always (M)if (M) model=12'b000000110000;else model=12'b000100000000;

11、计数模块计数模块如下,由于q为16进制数,我们需要的输出为BCD码,故进行调整。平常时q来一个脉冲加1,当加到个位为9时,也就是1001,将其加7变为16也就是0,实现了个位由9到0的BCD计数,同时也会向十位进1。当十位和个位同时,为9时,q位加96也就是十位加6,再加上个位向十位进的1就是加7,十位会清零同时个位也会清零,同时向百位进1,实现了正常的十进制BCD码计数。Rst则为清零信号,en为使能信号。always (posedge CLK or negedge rst)beginif(!rst)q=0;elseif(en) beginif(q<model)begin if (gw

12、=9) begin q=q+7; if (sw=9) q=q+96; end else q=q+1; endelse q=0;end End当计数到顶后有个标志位d标志是否计到顶。always (q)begin if(q<model) d<=0; else d<=1;end循环扫码模块如下,由于sel的变化频率和系统时钟相同,所以肉眼辨别不出来在跳动,可以通过其分别选择数码管并将个位十位百位呈现在数码管上,同时配有译码程序。always (sel) begin case (sel) 0: a=bw; 1: a=sw; 2: a=gw; default: a=0; endcas

13、e case (a)0:SG<=8'b00111111; 1:SG<=8'b00000110;2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101;6:SG<=8'b01111101; 7:SG<=8'b00000111; (五) 实验截图仿真时用CLK代替分频频率便于观察.总体图Rst可以实现计数的清零。当M为1时实现了模30的计数,同时标志位为1当M为0时实现了模100的计数,同时标志

14、位为1使能信号en为0时计数保持不变(六) 实验总结初步进行了自己设计程序和仿真一系列工作,加深了对设计过程和语句使用的理解。进而对软硬件的操作使用都有了进一步的熟练,遇到的基础问题也能想办法去解决了,不像第一次那样手足无措了。语法语句也大概有了了解。三、序列信号发生和检测器设计 (一) 实验目的1、 进一步熟悉EDA实验装置和Quartus软件的使用方法;2、 学习有限状态机法进行数字系统设计;3、 学习使用原理图输入法进行设计。(二) 设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下:1、 先用设计01

15、1101101100100100序列信号发生器,其最后6BIT数据用LED显示出来;2、 再设计一个序列信号检测器,检测上述序列信号,若检测到串行序列“110110”则输出为“1”,否则输出为“0”;(三) 主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置 1套(四) 实验思路首先画出状态转移图总体程序如下module xulieji2(clk,rst,en,date,SOUT);parameter s0=1,s1=2,s2=3,s3=4,s4=5,s5=6,s6=7;input clk,rst,en;output date,SOUT;wire SOUT;reg

16、8:0 cnt;reg6:0 ST,NST;reg5:0 date;reg16:0 sdate;assign SOUT=(NST=s6);always ( posedge clk or negedge rst )beginif(!rst) beginST<=s0;date<=6'b000000;sdate<=17'b011101101100100100;cnt<=16;endelse if(en) begin ST<=NST;date5:1<=date4:0;date0<=sdatecnt;cnt<=cnt-1;endelse c

17、nt<=0;case(ST)s0: begin if(date0=1'b1) NST<=s1;else NST<=s0;ends1: begin if(date0=1'b1) NST<=s2;else NST<=s0;ends2: begin if(date0=1'b0) NST<=s3;else NST<=s2;ends3: begin if(date0=1'b1) NST<=s4;else NST<=s0;ends4: begin if(date0=1'b1) NST<=s5;else NS

18、T<=s0;ends5: begin if(date0=1'b0) NST<=s6;else NST<=s2;ends6: begin if(date0=1'b0) NST<=s0;else NST<=s4;enddefault: NST<=s0;endcase endendmodule这里用到了状态机技术,状态机可以方便的设置程序满足什么条件然后去往什么状态,利用状态机可以实现检测到110110时的状态,同时可以在不满足时准确的调往正确的状态以便于下一步的判断。状态机简写为FSM(Finite State Machine),主要分为2大类:

19、第一类,若输出只和状态有关而与输入无关,则称为Moore状态机;第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机。要特别注意的是,因为Mealy状态机和输入有关,输出会受到输入的干扰,所以可能会产生毛刺(Glitch)现象,使用时应当注意。事实上现在市面上有很多EDA工具可以很方便的将状态图的描述转换成可以综合的程序代码。状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:现态:是指当前所处的状态。条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状

20、态的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。赋值模块parameter s0=1,s1=2,s2=3,s3=4,s4=5,s5=6,s6=7;input clk,rst,en;output date,SOUT;wire SOUT;reg8:0 cnt;reg6:0 ST,NST;reg5:0 date;reg16:0 sdate;assign SOUT=(NST=s6

21、);s1到s6为状态机的不同状态,clk为控制序列输入的信号,rst为清零信号,en为使能信号,SOUT为检测到序列110110时的输出信号1,cnt为控制哪一位数据进行检测的数,ST和NST为状态机现在的状态和下一时刻将要到来的状态,date为检测到的6为数据,sdate为输入序列,当检测到状态为s6时,通过assign SOUT=(NST=s6)可以让SOUT输出为1.输入序列模块always ( posedge clk or negedge rst )beginif(!rst) beginST<=s0;date<=6'b000000;sdate<=17'

22、b011101101100100100;cnt<=16;endelse if(en) begin ST<=NST;date5:1<=date4:0;date0<=sdatecnt;cnt<=cnt-1;endelse cnt<=0;Clk为序列输入信号,rst为清零信号,rst为低电平时将初始状态设为s0,初始6位待检测数据为000000,17位输入序列为011101101100100100,先从最高位从左往右输入,所以cnt开始时为16。en为使能信号,当en为1时可以将下一状态NST赋予现在状态ST,同时将序列进行移位,待检测信号进行输入,同时cnt减1

23、指向下一数据。如果en为0,则保持现在的状态不进行工作。状态转移模块case(ST)s0: begin if(date0=1'b1) NST<=s1;else NST<=s0;ends1: begin if(date0=1'b1) NST<=s2;else NST<=s0;ends2: begin if(date0=1'b0) NST<=s3;else NST<=s2;ends3: begin if(date0=1'b1) NST<=s4;else NST<=s0;ends4: begin if(date0=1&#

24、39;b1) NST<=s5;else NST<=s0;ends5: begin if(date0=1'b0) NST<=s6;else NST<=s2;ends6: begin if(date0=1'b0) NST<=s0;else NST<=s4;enddefault: NST<=s0;endcase endEndmodule通过这个状态转移语句可以正确的实现检测到110110便可使状态到达s6,即便序列为110110110时也是可以的,原理附状态转移图。(五) 时序仿真可以清楚的看出,当检测到110110序列时sout便为1,即便

25、是连续的110110110也可以检测出来,证明了这个程序的正确性。(六) 实验总结要求画出状态转移图,我把书上的状态机部分仔细阅读,参考了书上的程序编写了这个程序,一开始检查的时候不符合要求,后来检查是状态转移图弄错了,修改之后进行仿真,便得到了正确的结果。状态机在EDA的程序设计中应用广泛。经过这次实验深刻掌握了状态机技术和状态转移图的画法,进一步激发了我对eda的兴趣。四、 交通灯控制器设计 (一) 实验目的1、 学习与日常生活相关且较复杂数字系统设计;2、 进一步熟悉EDA实验装置和Quartus软件的使用方法;3、 学习二进制码到BCD码的转换;(二) 设计要求完成设计、仿真、调试、下

26、载、硬件测试等环节,在型EDA实验装置上实现一个由一条主干道和一条乡间公路的汇合点形成的十字交叉路口的交通灯控制器功能,具体要求如下:1、 有MR(主红)、MY(主黄)、MG(主绿)、CR(乡红)、CY(乡黄)、CG(乡绿)六盏交通灯需要控制;2、 交通灯由绿转红前有4秒亮黄灯的间隔时间,由红转绿没有间隔时间;3、 乡间公路右侧各埋有一个串连传感器,当有车辆准备通过乡间公路时,发出请求信号S=1,其余时间S=0;4、 平时系统停留在主干道通行(MGCR)状态,一旦S信号有效,经主道黄灯4秒(MYCR)状态后转入乡间公路通行(MRCG)状态,但要保证主干道通行大于一分钟后才能转换;5、 一旦S信

27、号消失,系统脱离MRCG状态,即经乡道黄灯4秒(MRCY)状态进入MGCR状态,即使S信号一直有效,MRCG状态也不得长于20秒钟;6、 控制对象除红绿灯之外,还包括分别在主干道和乡间公路各有一个两位十进制倒计时数码管显示。(三) 主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置 1套(四) 实验思路总体程序如下程序大体分为S=1与S=0的情况,不同情况对应不同处理方法,每一次COUNTER均为0时根据S的1和0来改变数码管的计数的灯的情况,具体原理在注释中有。module jiaotong (S,clk,LED,COUNTER,LED1,sel); input

28、 clk; reg CPB; /时钟input S; output 2:0 sel;reg 2:0 sel; /指明乡村路口是否有汽车的通行信号reg 3:0a;output 5:0 LED; /信号灯的显示output 7:0 LED1; /显示时间的十位output 8:0 COUNTER; /数码的显示reg 5:0 LED;reg 7:0 COUNTER;reg 7:0 LED1;reg 35:0i;reg flag1;reg flag2; reg 7:0 cnt; initialbegin flag2='b0; flag1='b0; COUNTER7:0='D

29、60; LED5:0<=6'b001100; /主干道是绿灯乡村道是红灯end always (posedge clk) begin cnt=cnt+1; if (cnt=1000) begin CPB=1'b1; cnt=0; end else CPB=1'b0;endalways (posedge clk) begin if (sel<1) sel=sel+1; else sel=0; end /sel为数码管选择always (posedge clk)begin if(COUNTER3:0=4'D0 && COUNTER7:4=

30、4'D0) /在数码管是60时判断是否有信号s的出现 begin if(S)/S为1即乡村想中断的情况下 begin if(LED5:0=6'b001100) begin LED5:0<=6'b010100; /表示主干道是黄灯而乡村是红灯 COUNTER7:4<=4'D0; /显示的是4秒钟 COUNTER3:0<=4'D4; end else if(LED5:0=6'b010100) /表示4秒钟过后的乡村开始通路了 begin LED5:0<=6'b100001; /表示主干道是红灯而乡村是绿灯 COUNTE

31、R7:4<=4'D2; /显示的是20秒钟 COUNTER3:0<=4'D0; flag1=1'b1; end else if(LED5:0='b100001) /表示20秒过后主干道通行了 begin LED5:0<='b100010; /表示主干道是红灯而乡村是黄灯 COUNTER7:4<=4'D0; /显示的是4秒钟 COUNTER3:0<=4'D4; flag1='b0; end else if(LED5:0='b100010) begin LED5:0<='b00110

32、0; /主干道是绿灯乡村道是红灯 COUNTER7:4<=4'D6; /显示的是60秒钟 COUNTER3:0<=4'D0; end end else /S为0即乡村不想中断的情况下 begin if(LED5:0='b010100) /表示4秒钟过后的乡村开始通路了 begin LED5:0<='b100001; /表示主干道是红灯而乡村是绿灯 COUNTER7:4<=4'D2; /显示的是20秒钟 COUNTER3:0<=4'D0; flag1=1'b1; /表示可以开始进行20秒的检查是否乡村 end

33、else if(LED5:0='b100001) /表示20秒过后主干道可以通行了 begin LED5:0<='b100010; /表示主干道是红灯而乡村是黄灯 COUNTER7:4<=4'D0; /显示的是4秒钟 COUNTER3:0<=4'D4; flag1='b0; endelse if(LED5:0='b100010) /表示4秒过后主干道通行了 begin LED5:0<='b001100; /表示主干道是绿灯而乡村是红灯 COUNTER7:4<=4'D6; /显示的是60秒钟 COUNT

34、ER3:0<=4'D0;end else if(LED5:0='b001100) begin flag2='b1;/60秒过后才可以让乡村中断主干道 LED5:0<='b001100;/主干道是绿灯乡村道是红灯 COUNTER7:4<=4'D6; /再次显示60秒钟 COUNTER3:0<=4'D0; end end end else begin if(S && (flag2='b1) /表示乡村道路有信号并且可以让乡村道路通行了,乡村想中断 begin LED5:0<='b01010

35、0; /表示主干道是黄灯而乡村是红灯 COUNTER7:4<=4'D0; /显示的是4秒钟 COUNTER3:0<=4'D4; flag2='b0; end else begin if(COUNTER3:0=4'D0) /正常计数 begin COUNTER7:4=COUNTER7:4-4'D1; COUNTER3:0=4'D9; end else COUNTER3:0=COUNTER3:0-4'D1; end end if(flag1='b1) begin/乡村不想绿灯了,想中断其20秒的绿灯 if(!S) begi

36、n flag2='b0; flag1='b0; LED5:0<='b100010; /表示主干道是红灯而乡村是黄灯 COUNTER7:4<=4'D0; /显示的是4秒钟 COUNTER3:0<=4'D4; end endend always (sel) begin case (sel) 0: a=COUNTER7:4; /1数码管为十位 1: a=COUNTER3:0; default: a=0; endcase case (a) 0:LED17:0='b00111111; 1:LED17:0='b00000110; 2

37、:LED17:0='b01011011; 3:LED17:0='b01001111; 4:LED17:0='b01100110; 5:LED17:0='b01101101; 6:LED17:0='b01111101; 7:LED17:0='b00000111; 8:LED17:0='b01111111; 9:LED17:0='b01101111; default: LED17:0=8'b11111111; endcase end endmodule 赋值模块input clk; reg CPB; /时钟input S; o

38、utput 2:0 sel;reg 2:0 sel; /指明乡村路口是否有汽车的通行信号 reg 3:0a;output 5:0 LED; /信号灯的显示output 7:0 LED1; /显示时间的十位output 8:0 COUNTER; /数码的显示reg 5:0 LED;reg 7:0 COUNTER;reg 7:0 LED1;reg 35:0i;reg flag1;reg flag2; reg 7:0 cnt; initialbegin flag2='b0; flag1='b0; COUNTER7:0='D60; LED5:0<=6'b00110

39、0; Clk为系统时钟1KHz,可以作为扫描频率,将其分频之后的CPB作为秒的计数频率,S为乡道是否想中断主道的信号,sel为循环扫描信号,LED为信号灯的显示,LED1为显示时间的十位,COUNTER为时间数码的显示。Flag1和flag2的处理方法当flag为1即在乡道20秒运行的过程中才为1,这时配合语句if(flag1='b1) begin/乡村不想绿灯了,想中断其20秒的绿灯 if(!S) begin flag2='b0; flag1='b0; LED5:0<='b100010; /表示主干道是红灯而乡村是黄灯 COUNTER7:4<=4&

40、#39;D0; /显示的是4秒钟 COUNTER3:0<=4'D4;就是在这时一旦检测到S为0即乡道没车的时候,让乡道黄灯转入主道60秒的计时。当flag2为1即在主道60之后才为1,这时配合语句 if(S && (flag2='b1) /表示乡村道路有信号并且可以让乡村道路通行了,乡村想中断 begin LED5:0<='b010100; /表示主干道是黄灯而乡村是红灯 COUNTER7:4<=4'D0; /显示的是4秒钟 COUNTER3:0<=4'D4; flag2='b0; End即S=1同时fla

41、g2为1时才可转入乡道的20秒计时。通过这两个信号正确地完成需要的功能。分频模块输出CPB为1秒的信号always (posedge clk) begin cnt=cnt+1; if (cnt=1000) begin CPB=1'b1; cnt=0; end else CPB=1'b0;数码管扫描模块循环扫码模块如下,由于sel的变化频率和系统时钟相同,所以肉眼辨别不出来在跳动,可以通过其分别选择数码管并将个位十位百位呈现在数码管上,同时配有译码程序。always (sel) begin case (sel) 0: a=COUNTER7:4; /1数码管为十位 1: a=COU

42、NTER3:0; default: a=0; endcase case (a) 0:LED17:0='b00111111; 1:LED17:0='b00000110; 2:LED17:0='b01011011; 3:LED17:0='b01001111; 4:LED17:0='b01100110; 5:LED17:0='b01101101; 6:LED17:0='b01111101; 7:LED17:0='b00000111; 8:LED17:0='b01111111; 9:LED17:0='b01101111;

43、default: LED17:0=8'b11111111; endcase end endmodule (五) 时序仿真总体图在主道开始60秒的计数过程中即使S为1也不会转入乡道运行在主道60秒计数结束后可以转入乡道的20秒,在乡道的20秒过程中如果S为0则又返回主道计数(六) 实验总结这次实验是从EDA实验以来遇到的最复杂的代码,其中的if语句众多,而且嵌套也多,开始的时候摸不到头脑,编译的时候在这些语句上也是出错最多了。还好有一定的代码基础,我就在此基础上进行了一些修改和改进,仿真也非常的成功,去实验室进行烧程序进板子的时候,也很快。所以,这次实验的验收也很快。这也大大的促使我学习

44、的动力,就想在下一次的实验中,学到更多。五、 多功能数字钟设计 (一) 实验目的1、 学习综合且较复杂数字系统设计; 2、 学习多层次、多模块数字系统设计;3、 学习数码管扫描显示电路设计;(二) 设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上由简单到复杂实现多功能数字钟功能,具体要求如下:1、 数码管扫描显示时、分、秒;2、 具有正常计时和调时、调分、调秒等校时功能;3、 经设置应具有整点报时功能;4、 经设置应具有跑表功能;5、 经设置应具有闹钟功能;以下部分为扩展要求:6、 音乐闹钟功能;7、 液晶显示:年、月、日、时、分、秒、星期;8、 自动闰年、闰月的万年历

45、功能;(三) 主要仪器设备1、微机1台2、QuartusII集成开发软件 1套3、EDA实验装置 1套(四) 实验思路整个程序采用模块化的设计方法。基本计数模块整个程序采用BCD码计数,即每一位要显示的数据都用3位二进制数来表示。根据设计要求,技术模块应有模60,模24和模100的计数,可以用模10的模6的和模24的三个模块通过例化元件一步步实现,而且计数模块应具有计数清零和锁存的功能。模10通过使能端en完成计数和锁存ncr清零,cp为计数脉冲,Q为数据输出。module counter10(Q,nCR,EN,CP); input nCR,EN,CP; output 3:0 Q; reg 3:0 Q;always (posedge CP or negedge nCR) begin if (nCR) Q<=4'b0000; else if (EN) Q<=Q; else if ( Q=4'b1001) Q<=4'b0000; else Q<=Q+1'b1; end endmodule模6原理与模10相同module counter6(Q,nCR,EN,CP); input nCR,EN,CP; output 3:0 Q; reg 3:0 Q;alwa

温馨提示

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

评论

0/150

提交评论