1、一位全加器的仿真波形图4)仿真成功后得到了预期的设计效果后,将引脚锁定。方法如下:选择assignment中的pins,将To栏的信号锁定到相应的Location引脚列中。引脚号对应关系可以从实验手册中查找,结果如图所示:5)引脚锁定以后,再编译全程编译一次,然后编程下载,选择Tools-programmer菜单,设计好编程硬件后点击Start开始下载。6)下载成功后在硬件上检测设计思路的是否正确。七 、硬件测试结果 实验开关K1,K2,K3打开和关闭后LED灯可以按照表格要求亮暗,实验成功。 实验二 模可变计数器设计(四)实验程序module count (clk,m,en,rst,SG,s
2、el,led ); input clk,m,en,rst; /output 11:0 q;output 7:0 SG;output 2:0 sel;output 0:0 led; (* synthesis, keep *) reg clk1; (* synthesis, keep *)wire 3:0 gw,sw,bw;reg 3:0a;reg 0: reg 11:0 model; reg 7:0 cnt,SG; reg 2: always (posedge clk) begin cnt=cnt+1; if (cnt=200) begin clk1=1b1; cnt=0; end else c
3、lk1=1b0;end /120分频,CLK为数码管扫描频率,CLK1为计数频率always (posedge clk)begin if (sel6) sel=sel+1; else sel=4; end /sel为数码管选择 always (sel) begin case (sel) 6: a=gw; /0数码管为个位 5: a=sw; /1数码管为十位 4: a=bw; /2数码管为百位 default: a=0; endcase case (a) 0:SG=8b00111111; 1:b00000110; 2:b01011011; 3:b01001111;b01100110;b01101
4、101;b01111101; 7:b00000111; 8:b01111111; 9:b01101111; /8段译码值 SG=8b11111111; endcase always (m) if (m) model=12b000000001000; /模值15 else model=12b0000011100100; /模值119 assign gw=q3:0; assign sw=q7:4; assign bw=q11:8; always (posedge clk1,negedge rst) begin if (!rst) q=0; else if (en) if (qmodel) if (
5、gw=9) begin q=q+7; if (sw=9) q=q+96; end /BCD调整 else q=q+1; end else q=0;always(q)if(qmodel) led=0;else ledNew- Verilog HDL File,点击OK后在打开的界面下输入已经设计好的程序。(3)输入完程序后,保存文件选择菜单File-Save as,将文件保存到工程文件夹中,文件名不能含有中文字符,最好与程序实体名一样。(4)保存好文件后,一般会提示是否新建一个工程,选择是,如果没有就在菜单打开File-New project Wizard项,将出现工程项目建立向导。(5)按照工
6、程项目向导提示设计好工程中要用到的文件放到同一个工程文件夹中,选择实验中用到的芯片和第三方工具(一般默认EDA自带的工具箱,在这里不做任何选择)。(6)完成工程项目建立后选择processing-start compilation或选择 按钮开始全程编译,如果编译过程中出现错误或警告提示,则双击错误或警告提示就可以找到该错误或警告在设计文件的位置。(7)在完成设计输入和综合编译以后,可以通过时序仿真来检查设计是否符合要求,这里我们可以通过建立波形文件(.vmf)。在选择File-Vetor Waveform File项后选择OK。(8)设计Edit栏选择End Time设计时间为50 us ,
7、在View-ulitity windows中选择Node Finder或按Alt+1,然后将所有的输入输出拖到波形文件中,设计好输入时序和输出方式后保存文件。选择processing栏中的Start simulation或选择 按钮开始波形仿真。(9)仿真成功后得到了预期的设计效果后,将引脚锁定。(10)引脚锁定以后,再编译全程编译一次,然后编程下载,选择Tools-(11)下载成功后在硬件上检测设计思路的是否正确。(六)仿真波形编译仿真前波形设置,即输入设置:仿真结果:此时M=0,计数值q到111变重新开始计数。此时M=1,计数值q到8变重新开始计数。图中四个输入:clk为时钟频率, en为
8、与能端,高电频有效, rst为复位控制,低电频有效, m为模值改变,m=0,表示模值为111,m=1,表示模值为8。输出q表示计数,实验成功。(7) 硬件测试结果实验中调节K1打开为高电频,K2调节模值,并按下复位键开始计数,可以看到数码管上有数字在增加,当K2关闭,计数到111后重新0开始计数,当K2打开,计数到8后重新0开始计数。实验成功。实验三 序列信号发生和检测计设计五 实验程序module x (clk,f,m,clr1,clr2,ld,s); input clk,clr1,clr2,ld; output f,m; output 4:0 s; reg f,m;0 q2; reg 4:
9、0 z,s; reg 15:0 wo; parameter 15:0 xulie=16b1011101000111011; /要产生的序列 parameter 4:0 q1=5b11101; /要检测的序列 always (posedge clk,negedge clr1) if (clr1) f /清产生序列 else if (ld) wo=xulie; else begin wo0=wo15; f wo15:1=wo14: /并行转换为串行 always (posedge clk or negedge clr2) begin if (clr2) q2= 0; /清检测序列 else cas
10、e (q2) 0 : if (f=q14) q2 else q2 1 : if (f=q13) q2=2; 2 : if (f=q12) q2=3; 3 : if (f=q11) q2=4;= 3; 4 : if (f=q10) q2=5; /状态转移 q2 always (q2) if (q2=5) m= 1; else m /检测到11101,输出1 z4:1=z3: z0=f; s=z; / 转换为并行输出(六) 实验步骤 (七)仿真波形由图知四个输入clk为1HZ频率, clr1, clr2为控制开关高电频正常工作,低电频载入数据, ld计数开关,低电频正常计数监测。输出 f为当前正在
11、载入的序列值, m为监测到序列11101后为高电频,z,s显示正在检测的序列。图可见,当z,s为11101时,m为高电频,仿真成功。(八)硬件测试结果实验开始按下复位键s1,s2,打上开关K3载入数据,再打下开关K3,开始正常工作,可以看到第七个LED显示f,前五个LED分别显示正在检测序列的五位,第八位显示m的值。当第八位LED亮时,前五位LED显示正好是11101,经过实验代码调整,本实验在第八个LED不亮时,前五位全部不亮,当当第八位LED亮时,前五位LED显示11101,即亮亮亮暗亮。 实验四交通灯控制器设计(四) 实验程序module traffic (S,clk,LED,COUNT
12、ER,LED1,sel);input clk;reg CPB; /时钟input S;reg 2: /指明乡村路口是否有汽车的通行信号 reg 3:output 5:0 LED; /信号灯的显示0 LED1; /显示时间的十位output 8:0 COUNTER; /数码的显示reg 5:reg 7:reg 35:0i;reg flag1;reg flag2;0 cnt;initial flag2= flag1= COUNTER7:0=D60; LED5:0=6b001100; /主干道是绿灯乡村道是红灯end if (cnt=100) begin CPB=1 else CPB=1always
13、 (posedge clk) 1) sel=sel+1; else sel=0;always (posedge CPB) if(COUNTER3:0=4D0 &4=4D0) /在数码管是60时判断是否有信号s的出现 if(S) if(LED5:0=6b001100)b010100; /表示主干道是黄灯而乡村是红灯4=4D0; /显示的是4秒钟 COUNTER3:D4; else if(LED5:b010100) /表示4秒钟过后的乡村开始通路了b100001; /表示主干道是红灯而乡村是绿灯D2; /显示的是20秒钟 flag1=10=b100001) /表示20秒过后主干道通行了=b100010; /表示主干道是红灯而乡村是黄灯b100010) /表示即使s=1,20秒过后都要返源D6; /显示的是60秒钟 else /表示可以开始进行20秒的检查是否乡村b001100) if(S & (flag2=b1) /表示乡村道路有信号并且可以让乡村道路通行了D0) /正常计数4=COUNTER7:4-4D1;0=4D9;0=COUNTER3:0-4 if(flag1=b1) if(!S) a=COUNTER7: a=COUNTER3:LED17: LED17:0=8(10)引脚锁定以后,再编译
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1