模可变计数器设计Verilog语言_第1页
模可变计数器设计Verilog语言_第2页
模可变计数器设计Verilog语言_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、LOGO模可变计数器设计Ve r i log 语言Document serial number NL89WT-NY98YT-NC8CB-NNUUT-NUT108一实验目的1、进一步熟悉实验装置和Quartus II软件的使用;2、进一步熟悉和掌握EDA设计流程;3、学习简单组合、时序电路的EDA设计;4、学习计数器中二进制码到BCD码的转换技巧;5、学习实验装置上数码管的输出方法。二设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变 计数器功能,具体要求如下:1、设置一个按键控制改变模值,按键按下时模为10-99之间具体数值自行确定 的数没按下时模为100-199

2、之间具体数值自行确定的数;2、计数结果用三位数码管十进制显示。三主要仪器设备3、微机1台4、QuartusII集成开发软件1套5、EDA实验装置1套四实验步骤主要有三个模块1 :个模20和模119的计数器2:数码管的显示3 : BCD的调整源程序:module count (clk.nken.rsl.a.seLSG.d);input clkjn.en.rst;output 17:0) SG:output |2:0J sei;output a;(* synthesis, keep *) reg clkl;(* synthesis, keep *) wire 3:0 gw,sw,bw:/( syn

3、thesis, keep ) /reg 3:0a:reg 111:0 q:reg 11:0 model;reg 7:0| cnt.SG;reg 2:0 sei:reg 0:0d;output |0:0|d:always (posedge elk)begin cnt=cnt+l;if (cnt=200) begin clkl=rbl; cnl=0: endelse clkl=rb0: 200分频,CLK为数码管扫描频率,CLK1为计数频率if (sel2) sel=sel+l; else sel=0: end sel 为数码管选择always (sel) begincase (sei)0: a=

4、bw;/0数码管为百位l:a=sw:/l数码管为十位2: a=gw: /2数码管为个位default: a=0:endcasecase (a)0:SG=8b00111111: 1:SG=8,b00000110:2:SG=8 b01011011; 3:SGv=8b01001111;4:SG=8 b01100110: 5:SG=8,b01101101;6:SG=8*b01111101: 7:SG=8,b00000111:8: SG=8b01111111: 9:SG=8,b01101111:/8 段译码值endcase endalways (m)if(m) model=12W00()0100000;

5、 模值 20assign gw=q|3:0|;assign sw=q7:4:assign bw=q|l 1:8:always (posedge clkl.negedge rst)beginif (!rst) q=0:else if (en)beginif (qmodel)beginif (gw=9) begin q=q+7: if (sw=9) q=q+96: end /BCD 调整 else q=q+l:endelse q=0:endendalways (q)if(qmodel) d=0;else dv=l;endmodule波形仿真:cikl是计数频率,每来一个clkl信号q计数一次如下图

6、:rst=l有效时开始计数elk为扫描频率sel=O时数码管显示百位a=0sel=l时数码管显示十位3二1sel=2时数码管显示个位a=3m=l模20计数器m=0模119计数器管脚分配:SG0PIN_F13SG1PIN_F14SG2PIN_F15SG3PIN_E15SG4PIN_F16SG5PIN_F17SG6PIN_E18SG7PIN_F18elkPIN.C13enPINH8inPIN_J9 rstPIN_C5selOPIN_G18seljlPIN_G17sel2PIN_G16d0PIN_G13五实验心得本实验主要是三大模块的编写,第一次的实验在老师给的参考代码下进行的,不过 错误依然很多,

7、主要有几个重点药掌握,一是首先要编写出能够计数的模块,用m来控 制模值的变化匸1时模值为20 m=0时模值为119 ;二是计数模块都是二进制计数的, 而要在数码管上显示计数的话就必须进行BCD调整,并且q是一个是十二位的存放 器,通过把gw=q3:0;sv=q7:4:bv=qll:8赋值的方法;一个个的显示在数码管上 由于elk的频率比拟快,所 以可以看到三位数码管显示的值,我觉得管脚分配也是比拟关键的!一开始我就把个位和百位显示的值搞反了 序列信号发生和检测器设计一实验目的1、进一步熟悉EDA实验装置和Quartus II软件的使用方法;2、学习有限状态机法进行数字系统设计;3、学习使用原理

8、图输入法进行设计。二设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现一个串行序列信号发生器和一个序列信号检测器的功能,具体要求如下:1、再设计一个序列信号检测器,检测上述序列信号,假设检测到串行序列“11101那么输出为T,否那么输出为“0;三主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置四实验步骤主要两局部1:序列信号发生器设置q0=q15;Q=q15; q15:l=q14:0;通过循环移位串行输出2:序列信号检测器状转移态图一共有六个状态分别为 S = 5dOOOOO, A = 500001, B = 5d00011, C = 5

9、d00110, D = 5d01101,、口 E = 5311010;源程序:module xulie(clk,rst,z,Q,led); input clkjst;output Q,z;output 4:0led;reg 4:0 led;reg 4:0 state;reg Q.z;reg 4:0 a;reg 15:0 q; parameter S = 5d00000, A = 500001, B = 5d00011, C = 5d00110, D = 5301101, E = 5311010;always (posedge elk) beginif(rst=O) beginendelse b

10、eginq0=q15;Q=q15; q15:l=q14:0; endendalways (posedge elk) beginif(state=D & Q=l) begin z=l;led=5,blll01;endelse begin z=0;Ied=5*b00000;end endalways (posedge elk or negedse rst) if(!rst)beginstate=S;endelsecasex(state)S: if(Q=l)state=A;else statev二S;A: if (Q=l)state=B;else state= S;B: if (Q=l)state v 二C;else state=S;C: if(Q=O)state=D;else state=C;D: if(Q=l)state=E;else state=S;E: if(Q=O)state=S;else state=A;default: state=S;endcaseendniodule波形仿真当rst=l是序列信号发生器循环发出当检测到11101是z=l输出高电平,并且同时使11101序列显示在五个led灯上(五) 实验心得做实验之前准备了

温馨提示

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

评论

0/150

提交评论