名称:SOS求救信号发生器设计Verilog代码ISE? nexys3开发板
软件:ISE
语言:Verilog
代码功能:
SOS求救信号发生器
1、控制LED0发出SOS信号,三次短闪烁三次长闪烁,短为1S,长为2S。
2、一个按键(rst)控制灯光和计时同时开始,同时暂停。
3、另外数码管显示计时的时间,从0000-9999,1S增1
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在nexys3开发板验证,nexys3开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1.工程文件
SOS_led:为下载到开发板的版本
SOS_led_sim:为将分频计数值减小的版本,可以减小仿真时间,仿真用该版本
2.程序文件
3.程序运行
4.Testbench
5.仿真图
部分代码展示:
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:????20:31:22?12/26/2018? //?Design?Name:? //?Module?Name:????SOS_led? //?Project?Name:? //?Target?Devices:? //?Tool?versions:? //?Description:? // //?Dependencies:? // //?Revision:? //?Revision?0.01?-?File?Created //?Additional?Comments:? //控制LED0发出SOS信号,三次短闪烁三次长闪烁,短为1S,长为2S。 //一个按键(rst)控制灯光和计时同时开始,同时暂停。 //另外数码管显示计时的时间,从0000-9999,1S增1 ////////////////////////////////////////////////////////////////////////////////// module?SOS_led( ????input?clk,//时钟100M ????input?reset_p,//高电平复位--BTNL ????output?led,//SOS——led,高亮 ????output?[7:0]?seg,//段选,低亮 ????output?[3:0]?an//位选,低亮 ????); ??? reg?[31:0]?div_cnt_1Hz=32'd0;//1s //产生1Hz reg?clk_1Hz=0; always@(posedge?clk) ????if(div_cnt_1Hz>=32'd100000000)?begin//100000000Hz分频到1Hz,为加快仿真速度,仿真时减小到100 ???????div_cnt_1Hz<=?32'd0; ???????clk_1Hz<=1; ???????end ????else?begin ???????div_cnt_1Hz<=div_cnt_1Hz?+?32'd1;? ???????clk_1Hz<=0; ???????end //定义状态 parameter?s0=5'd0; parameter?s1=5'd1; parameter?s2=5'd2; parameter?s3=5'd3; parameter?s4=5'd4; parameter?s5=5'd5; parameter?s6=5'd6; parameter?s7=5'd7; parameter?s8=5'd8; parameter?s9=5'd9; parameter?s10=5'd10; parameter?s11=5'd11; parameter?s12=5'd12; parameter?s13=5'd13; parameter?s14=5'd14; parameter?s15=5'd15; parameter?s16=5'd16; parameter?s17=5'd17; parameter?s18=5'd18; parameter?s19=5'd19; parameter?s20=5'd20; parameter?s21=5'd21; parameter?s22=5'd22; parameter?s23=5'd23; parameter?s24=5'd24; parameter?s25=5'd25; parameter?s26=5'd26; parameter?s27=5'd27; parameter?s28=5'd28; parameter?s29=5'd29; reg?[4:0]?current_state=5'd0; reg?light=0; assign?led=light; always@(posedge?clk) if(reset_p)begin ????current_state<=s0; ?light<=0; ?end else if(clk_1Hz)//1秒变化一个状态 ????case(current_state) ????????s0:begin ????????????current_state<=s1; ????????????light<=1;//一秒亮 ????????????end ????????s1:begin ????????????current_state<=s2; ????????????light<=0;//一秒灭 ????????????end ????????s2:begin ????????????current_state<=s3; ????????????light<=1;//一秒亮 ????????????end ????????s3:begin? ????????????current_state<=s4; ????????????light<=0;//一秒灭 ???????????end ????????s4:begin? ???????????????current_state<=s5; ???????????????light<=1;//一秒亮 ??????????????end ????????s5:begin? ???????????????current_state<=s6; ???????????????light<=0;//一秒灭 ???????????????end ????????s6:begin? ???????????????current_state<=s7; ???????????????light<=1;//一秒亮 ???????????????end ????????s7:begin????????????????????????????????? ???????????????current_state<=s8;???????????????????????? ???????????????light<=1;//一秒亮?????????? ???????????????end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1144
阅读全文
458