




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2014年EDA实验第一次实验:实验1:QII软件及实验板的使用;用图形输入法和语言输入法完成点灯实验(用两个按键控制两个灯的亮灭:灯的状态随按键状态改变而改变)。完成软件仿真。module simple_lightcon(input wire 1:0 key, output wire 1:0 led);assign led= key;endmodule实验2:联控点灯实验:用两个按键独立控制同一个灯亮灭,第三个按键同时控制该灯和另一个灯亮灭。module com_lightcon(input wire 2:0 key, output wire 1:0 led);assign led0= key0;assign led1= key0&( key2 key1);endmodule实验3:流水灯实验:完成一个8路流水灯控制实验,要求有以下3种花型:1)8路灯同时亮灭;2)从左至右再从右至左逐个亮(每次只有1路亮);3)8路灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭。用3个按键控制3种花型。按下花型按键就一直显示相应花型,再按该键可暂停。可设置1个复位键关闭显示。/*-Filename:waterlight.vAuthor:BassonData : 2014-11-21Version : V1.0Description : This file has the module of HDL top.Modification History:DatabyVersionChange Description=14/11/21BassonV1.0Original-*/module water_light( input wire sys_sclk, /时钟信号(输入信号) input wire srst_n, /复位信号(输入信号) input wire2:0 key, /按键信号(输入信号) output reg 3:0 ledlight /输出接8个led灯(输出信号));/消抖动-reg 2:0 key_reg;/用于存储现有按键always (posedge sys_sclk,negedge srst_n)begin if(srst_n=1b0) key_reg=3b111; else key_reg=key;endreg 2:0 key_reg_r;/用于存储前一按键always (posedge sys_sclk,negedge srst_n)begin if(srst_n=1b0) key_reg_r=3b111; else key_reg_r=key_reg;/用于存储前一按键endwire2:0 key_an=key_reg_r&(key_reg);/用于存储按键下降沿/消抖时间设定为20ms左右- parameter CCNTWITHD=20; reg CCNTWITHD-1:0 ccnt; reg2:0 keyout;always (posedge sys_sclk,negedge srst_n)begin if(srst_n=1b0)ccnt=20b0;else if(key_an)ccnt=20b0;/按键有抖动就清零-消除抖动的计数器else ccnt=ccnt+1b1;/没有抖动,消除抖动的计数器开始加1,延时20ms。endreg 2:0 low_key;/用于记录消除抖动后的现有按键状态always (posedge sys_sclk,negedge srst_n)begin if(srst_n=1b0) low_key=3b111; else if(ccnt=20hfffff) low_key=key; end /*消抖动结束*/ /*流水灯控制部分程序-*/ /可按键标志位- reg 2:0 low_key_r;/用于记录消除抖动后的下一按键状态 always (posedge sys_sclk,negedge srst_n)begin if(srst_n=1b0) low_key_r=3b111; else low_key_r=low_key; end wire 2:0 key_flag11=low_key_r&(low_key);/消逗后按键下降沿个数,作为标志位/标志位-reg2:0 key_flag1;always (posedge sys_sclk ,negedge srst_n)beginif(srst_n=1b0)beginkey_flag1=3b000;endelse/花型按键显示相应花型-有优先级电路设计代码begincase(key_flag11)3b001:beginkey_flag1=2b00,key_flag10;/奇数显示相应花型,偶数暂停end3b010:beginkey_flag1=1b0,key_flag11,1b0; /奇数显示相应花型,偶数暂停end3b100:begin key_flag1=key_flag12,2b00;/奇数显示相应花型,偶数暂停endendcaseendendwire2:0 key_flag=key_flag1; /50MHZ div_frequence to 1Hz - parameter COUNTWIDTH = 24;regCOUNTWIDTH-1:0 ccount;/reg sclk;wire ssclk; always (posedge sys_sclk, negedge srst_n) beginif(srst_n=1b0) begin ccountCOUNTWIDTH-1:0=d0;endelse ccount=ccount+1b1; end assign ssclk=ccountCOUNTWIDTH-1; / 流水灯显示控制程序- reg7:0 s0;reg7:0 s1;reg7:0 s2;reg3:0 count;always (posedge ssclk ,negedge srst_n)beginif(srst_n=1b0)begins0=4b0000;s1=4b1000;s2=4b1010;count=4b0;endelse/花型按键显示相应花型-有优先级电路设计代码begincase(key_flag)3b001:beginledlight=s0;/奇数显示相应花型,偶数暂停s0=s0;end3b010:beginif(count=4b0111)beginledlight=s1;s1=s10,s13:1; /奇数显示相应花型,偶数暂停count4b0111)beginledlight=s1;s1=s12:0,s13; count=count+1;endend3b100:beginledlight=s2;/奇数显示相应花型,偶数暂停s2=s2;end endcaseendendendmodule第二次实验:实验4:数据分配器实验:用2个按键代表输入数据in(2位),用2个按键代表选择控制数据位s1s0,用四组发光管(每组2位)代表四路数据输出out0-out3。当输入数据或控制数据改变时,要求输出数据进行相应变化(原理和真值表如下)。s1s0out0out1out2out300inzzz01zinzz10zzinz11zzzinmodule mux_4(in, out0, out1, out2, out3, sel);input1:0 sel;input1:0 in;output reg1:0 out0; /output reg1:0 out1; /output reg1:0 out2; /output reg1:0 out3; /always (in or sel)case(sel)2b00: beginout0 = in;out1 = 2bz;out2 = 2bz; out3 = 2bz;end2b01: beginout0 = 2bz;out1 = in;out2 = 2bz;out3 = 2bz;end2b10: beginout0 = 2bz;out1 = 2bz;out2 = in;out3 = 2bz;end2b11: beginout0 = 2bz;out1 = 2bz;out2 = 2bz;out3 = in;enddefault: beginout0 = 2bz;out1 = 2bz;out2 = 2bz;out3 = 2bz;endendcaseendmodule实验5:七段译码器实验:用一个按键代表数据输入,每按一次数据加一,从0开始到F,再到0,依次循环,相应数字在数码管上显示。module seg7_decode(a, b, c, d, e, f, g, dp, sel, out, keyin, clk);parameter COUNTWIDTH = 16;reg keyout;regCOUNTWIDTH-1:0 counter;wire clk_use;input keyin, clk;reg3:0 T;input2:0 sel;output 2:0 out;output reg a, b, c, d, e, f, g, dp;assign clk_use = counterCOUNTWIDTH-1;always (posedge clk)counter = counter + 1b1;always (posedge clk_use)keyout = keyin;always (posedge keyout)beginT = T + 1b1;endalways (T)begincase(T)4d0:a, b, c, d, e, f, g, dp = 8b11111100;/04d1:a, b, c, d, e, f, g, dp = 8b01100000;/14d2:a, b, c, d, e, f, g, dp = 8b11011010;/24d3:a, b, c, d, e, f, g, dp = 8b11110010;/34d4:a, b, c, d, e, f, g, dp = 8b01100110;/44d5:a, b, c, d, e, f, g, dp = 8b10110110;/54d6:a, b, c, d, e, f, g, dp = 8b10111110;/64d7:a, b, c, d, e, f, g, dp = 8b11100000;/74d8:a, b, c, d, e, f, g, dp = 8b11111110;/84d9:a, b, c, d, e, f, g, dp = 8b11110110;/94d10:a, b, c, d, e, f, g, dp = 8b11101110;/a4d11:a, b, c, d, e, f, g, dp = 8b00111110;/b4d12:a, b, c, d, e, f, g, dp = 8b10011100;/c4d13:a, b, c, d, e, f, g, dp = 8b01111010;/d4d14:a, b, c, d, e, f, g, dp = 8b10011110;/e4d15:a, b, c, d, e, f, g, dp = 8b10001110;/fdefault: a, b, c, d, e, f, g, dp = 8b11111100;endcaseendassign out = sel;endmodule第三次实验:实验6:数控分频器实验:用24MHz时钟分频,通过不同按键控制输出不同的频率信号,输出信号用LED指示。1)1Hz频率信号;2)0.5Hz频率信号。3)10Hz频率信号;module freque_div (input wire sys_clk,input wire sys_rst,output reg s_clkout_1Hz,output reg s_clkout_10Hz,output reg s_clkout_01Hz);reg30:0 count1;reg30:0 count10;reg30:0 count_01; always (posedge sys_clk, negedge sys_rst) beginif(sys_rst=1b0) begin count1=30d0; count10=30d0; count_01=30d0; s_clkout_1Hz =1b0; s_clkout_10Hz=1b0 ; s_clkout_01Hz=1b0; endelse begin if(count=25d25000000) begin s_clkout_1Hz = s_clkout_1Hz; count1=0; end/1Hzif(count=25d2500000) begin s_clkout_10Hz = s_clkout_10Hz; count10=0; end/10Hzif(count=25d250000000) begin s_clkout_01Hz = s_clkout_01Hz; count_01=0; end /0.1Hzendend endmodule实验7:加法计数器实验在时钟信号(选择1Hz)作用下,通过使能端和复位信号完成加法计数器的计数。用2个按键分别表示使能和复位,用4个发光管表示计数的二进制结果。第四次实验:实验8:动态扫描实验:用4个按键分别代表加、减、暂停、复位,四位数码管代表四位十进制数,从0000开始到9999循环,自动计数,数据显示时间不大于1秒。module dscnt(key,clk,sels,segs);/动态扫描代码模板input 3:0key;/按键input clk;/系统时钟output reg 2:0sels;/位选,即选择某个数码管reg 1:0sels0;/位选中间寄存器变量,4个数码被用动态扫描output reg 6:0segs;/段选,即七段数码管reg 2:0 vkey;/记录按键被按下reg dataclk,bitclk;/段显示时钟和位扫描时钟reg 3:0disdata;/送入段显示数据。reg 15:0data;/四位十进制数据。reg 30:0cnt;/分频时钟计数器/按键部分代码-always(key)begin if(!key3)vkey=1;if(!key2)vkey=2;if(!key1)vkey=3;if(!key0)vkey=4;end/分频部分代码-always(posedge clk)begincnt=cnt+1;end/段显示时钟assign dataclk=cnt?; /?表示根据系统时钟,设计者自行选取合适的值/位扫描时钟assign bitclk=cnt?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冲床安全生产培训总结课件
- 气调包装智能化-洞察及研究
- 冲压工厂安全培训内容课件
- 湖北移动执法管理办法
- 烟台重点人员管理办法
- 矿业跨境IP合作模式-洞察及研究
- 2025年农业废弃物资源化利用技术产业布局与区域经济发展报告
- 特色小镇产业培育资金申请与产业集聚效应研究报告
- 舞蹈培训机构学员入学合同及教学进度跟踪协议
- 生态环保项目部施工现场安全协议书
- 改写地球历史的25种石头
- 全科规培:门诊SOAP病历考核模拟文档
- 《能源概论》课件
- 颂钵培训课件
- 2023年湖南长沙湘江新区所属事业单位招聘12人笔试参考题库(共500题)答案详解版
- 插花艺术与花艺课件
- CADCAM应用技术(CAXA2020)中职全套教学课件
- 生物医学工程伦理 课件全套 第1-10章 生物医学工程与伦理-医学技术选择与应用的伦理问题
- 全国硕士研究生考试数学历年真题
- 仓库管理作业流程规范
- 地面水仓清淤安全技术措施
评论
0/150
提交评论