名称:基于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
阅读全文
455