FPGA实验+代码_第1页
FPGA实验+代码_第2页
FPGA实验+代码_第3页
FPGA实验+代码_第4页
FPGA实验+代码_第5页
已阅读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 led 0 key 0 assign led 1 key 0 endmodule 实验 3 流水灯实验 完成一个 8 路流水灯控制实验 要求有以下 3 种花型 1 8 路灯同时亮灭 2 从左至右再从右至左逐个亮 每次只有 1 路亮 3 8 路灯每次 4 路灯亮 4 路灯灭 且亮灭相间 交替亮灭 用 3 个按键控制 3 种花型 按下花型按键就一直显示相应花型 再按该键可暂停 可设置 1 个复位键关闭显示 Filename waterlight v Author Basson Data 2014 11 21 Version V1 0 Description This file has the module of HDL top Modification History DatabyVersionChange Description 14 11 21 BassonV1 0Original module water light input wire sys sclk 时钟信号 输入信号 input wire srst n 复位信号 输入信号 input wire 2 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 1 b0 key reg 3 b111 else key reg key end reg 2 0 key reg r 用于存储前一按键 always posedge sys sclk negedge srst n begin if srst n 1 b0 key reg r 3 b111 else key reg r key reg 用于存储前一按键 end wire 2 0 key an key reg r 用于存储按键下降沿 消抖时间设定为 20ms 左右 parameter CCNTWITHD 20 reg CCNTWITHD 1 0 ccnt reg 2 0 keyout always posedge sys sclk negedge srst n begin if srst n 1 b0 ccnt 20 b0 else if key an ccnt 20 b0 按键有抖动就清零 消除抖动的计 数器 else ccnt ccnt 1 b1 没有抖动 消除抖动的计数 器开始加 1 延时 20ms end reg 2 0 low key 用于记录消除抖动后的现有 按键状态 always posedge sys sclk negedge srst n begin if srst n 1 b0 low key 3 b111 else if ccnt 20 hfffff low key key end 消抖动结束 流水灯控制部分程序 可按键标志位 reg 2 0 low key r 用于记录消除抖动后的 下一按键状态 always posedge sys sclk negedge srst n begin if srst n 1 b0 low key r 3 b111 else low key r low key end wire 2 0 key flag11 low key r 消逗后按键下降沿个数 作为标志位 标志位 reg 2 0 key flag1 always posedge sys sclk negedge srst n begin if srst n 1 b0 begin key flag1 3 b000 end else 花型按键 显示相应花型 有优先级电路设计代码 begin case key flag11 3 b001 begin key flag1 2 b00 key flag1 0 奇数显示相应花型 偶数暂停 end 3 b010 begin key flag1 1 b0 key flag1 1 1 b0 奇数显示相应花型 偶 数暂停 end 3 b100 begin key flag1 key flag1 2 2 b00 奇数显示相应花型 偶数暂停 end endcase end end wire 2 0 key flag key flag1 50MHZ div frequence to 1Hz parameter COUNTWIDTH 24 reg COUNTWIDTH 1 0 ccount reg sclk wire ssclk always posedge sys sclk negedge srst n begin if srst n 1 b0 begin ccount COUNTWIDTH 1 0 d0 end else ccount ccount 1 b1 end assign ssclk ccount COUNTWIDTH 1 流水灯显示控制程序 reg 7 0 s0 reg 7 0 s1 reg 7 0 s2 reg 3 0 count always posedge ssclk negedge srst n begin if srst n 1 b0 begin s0 4 b0000 s1 4 b1000 s2 4 b1010 count 4 b0 end else 花型按键 显示相应花型 有优先级电路设计代码 begin case key flag 3 b001 begin ledlight s0 奇数显示相应花型 偶数暂停 s0 s0 end 3 b010 begin if count 4 b0111 begin ledlight s1 s1 s1 0 s1 3 1 奇数显示相应花型 偶数暂停 count4 b0111 begin ledlight s1 s1 s1 2 0 s1 3 count count 1 end end 3 b100 begin ledlight s2 奇数显示相应花型 偶数 暂停 s2 s2 end endcase end end endmodule 第二次实验 实验 4 数据分配器实验 用 2 个按键代表输入数据 in 2 位 用 2 个按 键代表选择控制数据位 s1s0 用四组发光管 每组 2 位 代表四路数据输出 out0 out3 当输入数据 或控制数据改变时 要求输出数据进行相应变化 原理和 真值表如下 module mux 4 in out0 out1 out2 out3 sel input 1 0 sel input 1 0 in s1s0out0out1out2out3 00inzzz 01zinzz 10zzinz 11zzzin output reg 1 0 out0 output reg 1 0 out1 output reg 1 0 out2 output reg 1 0 out3 always in or sel case sel 2 b00 begin out0 in out1 2 bz out2 2 bz out3 2 bz end 2 b01 begin out0 2 bz out1 in out2 2 bz out3 2 bz end 2 b10 begin out0 2 bz out1 2 bz out2 in out3 2 bz end 2 b11 begin out0 2 bz out1 2 bz out2 2 bz out3 in end default begin out0 2 bz out1 2 bz out2 2 bz out3 2 bz end endcase endmodule 实验 5 七段译码器实验 用一个按键代表数据输入 每按一次数据加一 从 0 开始到 F 再到 0 依次循环 相应 数字在数码管上显示 module seg7 decode a b c d e f g dp sel out keyin clk parameter COUNTWIDTH 16 reg keyout reg COUNTWIDTH 1 0 counter wire clk use input keyin clk reg 3 0 T input 2 0 sel output 2 0 out output reg a b c d e f g dp assign clk use counter COUNTWIDTH 1 always posedge clk counter counter 1 b1 always posedge clk use keyout keyin always posedge keyout begin T T 1 b1 end always T begin case T 4 d0 a b c d e f g dp 8 b11111100 0 4 d1 a b c d e f g dp 8 b01100000 1 4 d2 a b c d e f g dp 8 b11011010 2 4 d3 a b c d e f g dp 8 b11110010 3 4 d4 a b c d e f g dp 8 b01100110 4 4 d5 a b c d e f g dp 8 b10110110 5 4 d6 a b c d e f g dp 8 b10111110 6 4 d7 a b c d e f g dp 8 b11100000 7 4 d8 a b c d e f g dp 8 b11111110 8 4 d9 a b c d e f g dp 8 b11110110 9 4 d10 a b c d e f g dp 8 b11101110 a 4 d11 a b c d e f g dp 8 b00111110 b 4 d12 a b c d e f g dp 8 b10011100 c 4 d13 a b c d e f g dp 8 b01111010 d 4 d14 a b c d e f g dp 8 b10011110 e 4 d15 a b c d e f g dp 8 b10001110 f default a b c d e f g dp 8 b11111100 endcase end assign 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 reg 30 0 count1 reg 30 0 count10 reg 30 0 count 01 always posedge sys clk negedge sys rst begin if sys rst 1 b0 begin count1 30 d0 count10 30 d0 count 01 30 d0 s clkout 1Hz 1 b0 s clkout 10Hz 1 b0 s clkout 01Hz 1 b0 end else begin if count 25 d25000000 begin s clkout 1Hz s clkout 1Hz count1 0 end 1Hz if count 25 d2500000 begin s clkout 10Hz s clkout 10Hz count10 0 end 10Hz if count 25 d250000000 begin s clkout 01Hz s clkout 01Hz count 01 0 end 0 1Hz end end endmodule 实验 7 加法计数器实验 在时钟信号 选择 1Hz 作用下 通过使能端和复位信号完成加法计数器的计数 用 2 个 按键分别表示使能和复位 用 4 个发光管表示计数的二进制结果 第四次实验 实验 8 动态扫描实验 用 4 个按键分别代表加 减 暂停 复位 四位数码管代表四位十进制数 从 0000 开始到 9999 循环 自动计数 数据显示时间不大于 1 秒 module dscnt key clk sels segs 动态扫描代码模板 input 3 0 key 按键 input clk 系统时钟 output reg 2 0 sels 位选 即选择某个数码管 reg 1 0 sels0 位选中间寄存器变量 4 个数码被用动态扫描 output reg 6 0 segs 段选 即七段数码管 reg 2 0 vkey 记录按键被按下 reg dataclk bitclk 段显示时钟和位扫描时钟 reg 3 0 disdata 送入段显示数据 reg 15 0 data 四位十进制数据 reg 30 0 cnt 分频时钟计数器 按键部分代码 always key begin if key 3 vkey 1 if key 2 vkey 2 if key 1 vkey 3 if key 0 vkey 4 end 分频部分代码 always posedge clk begin cnt cnt 1 end 段显示时钟 assign dataclk cnt 表示根据系统时钟 设计者自行选取合适的值 位扫描时钟 assign bitclk cnt 用于段显示的计算部分代码 加 减计数 暂停 复位 always posedge datacl

温馨提示

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

评论

0/150

提交评论