名称: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
阅读全文
777