名称:基于FPGA的SOS信号发生器设计Verilog代码ISENexys3开发板
软件:ISE
语言:Verilog
代码功能:
SOS信号发生器Nexys3开发板
控制LED0发出SOS信号,三次短闪烁三次长闪烁,短为1S,长为2S。
一个按键(rst)控制灯光和计时同时开始,同时暂停。
另外数码管显示计时的时间,从0000-9999,1S增1。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Nexys3开发板验证,Nexys3开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1.工程文件
SOS_led:为下载到开发板的版本
SOS_led_sim:为将分频计数值减小的版本,可以减小仿真时间,仿真用该版本
2.程序文件
3.程序运行
4.Testbench
5.仿真图
部分代码展示:
module segments_display( input clk,//100M input [15:0] display_data_in, output reg [3:0] weixuan, output reg [7:0] duanxuan ); wire [3:0] int_data_tho; wire [3:0] int_data_hun; wire [3:0] int_data_ten; wire [3:0] int_data_one; assign int_data_tho=display_data_in/1000%10;//整数部分的千位,除以1000后再除以10取余数 assign int_data_hun=display_data_in/100%10;//整数部分的百位,除以100后再除以10取余数 assign int_data_ten=display_data_in/10%10;//整数部分的十位,除以10后再除以10取余数 assign int_data_one=display_data_in%10;//整数部分的个位 reg [15:0] jishu=16'd0; always@(posedge clk) jishu<=jishu+16'd1; reg [3:0] display_data=4'd0; always@(posedge clk) begin case(jishu[15:14])//为加快仿真速度,仿真时将[15:14]改位[5:4] 2'd0:begin display_data<=int_data_tho;end//显示千位 2'd1:begin display_data<=int_data_hun;end//整数部分的百位 2'd2:begin display_data<=int_data_ten;end//整数部分的十位 2'd3:begin display_data<=int_data_one;end//整数部分的个位 default:begin display_data<=4'd0;end endcase end always@(posedge clk) begin case(jishu[15:14])//为加快仿真速度,仿真时将[15:14]改位[5:4] 2'd0:begin weixuan<=4'b0111; end 2'd1:begin weixuan<=4'b1011; end 2'd2:begin weixuan<=4'b1101; end 2'd3:begin weixuan<=4'b1110; end default:begin weixuan<=4'b1111; end endcase case(display_data) 0 : duanxuan<= (8'hc0); 1 : duanxuan<= (8'hf9); 2 : duanxuan<= (8'ha4); 3 : duanxuan<= (8'hb0); 4 : duanxuan<= (8'h99); 5 : duanxuan<= (8'h92); 6 : duanxuan<= (8'h82); 7 : duanxuan<= (8'hf8); 8 : duanxuan<= (8'h80); 9 : duanxuan<= (8'h90); default:duanxuan<= (8'hc0); endcase end endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=800
阅读全文
750