FPGA实验+代码概要1.doc
文本预览下载声明
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]( key[2]^ key[1]);
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:
Data by Version Change Description
=========================================================
14/11/21 Basson V1.0 Original
---------------------------------------------------------------------------------------------------*/
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==1b0) key_reg=3b111;
else key_reg=key;
end
reg [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; //用于存储前一按键
end
wire[2:0] key_an=key_reg_r(~key_reg); //用于存储按键下降沿
//消抖时间设定为20ms左右-------------------------------------------------------------------
parameter CCNTWITHD=20;
reg [CCNTWITHD-1:0] ccnt;
reg[2: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; //没有抖动
显示全部