欢迎来到天天文库
浏览记录
ID:39551022
大小:62.50 KB
页数:10页
时间:2019-07-06
《FPGA小程序-特权同学视频》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、特权同学视频程序第一课:分频moduleclkdiv(clk,rst_n,clk_div);inputclk;//50MHzinputrst_n;//低电平复位信号outputclk_div;//分频信号,连接到蜂鸣器//---------------------------------------------------reg[19:0]cnt;//分频计数器always@(posedgeclkornegedgerst_n)//异步复位if(!rst_n)cnt<=20'd0;elsecnt<=cnt+1'b1;//寄存器cnt20ms循环计数//----------------------
2、------------------------------regclk_div_r;//clk_div信号值寄存器always@(posedgeclkornegedgerst_n)if(!rst_n)clk_div_r<=1'b0;elseif(cnt==20'hfffff)clk_div_r<=~clk_div_r;//每20ms让clk_div_r值翻转一次assignclk_div=clk_div_r;endmodule第二课:按键//说明:当三个独立按键的某一个被按下后,相应的LED被点亮;//再次按下后,LED熄灭,按键控制LED亮灭modulesw_debounce(clk,rs
3、t_n,sw1_n,sw2_n,sw3_n,led_d1,led_d2,led_d3);inputclk;//主时钟信号,50MHzinputrst_n;//复位信号,低有效inputsw1_n,sw2_n,sw3_n;//三个独立按键,低表示按下outputled_d1,led_d2,led_d3;//发光二极管,分别由按键控制//--------------------------------------------------------reg[2:0]key_rst;always@(posedgeclkornegedgerst_n)if(!rst_n)key_rst<=3'b111;e
4、lsekey_rst<={sw3_n,sw2_n,sw1_n};reg[2:0]key_rst_r;//每个时钟周期的上升沿将low_sw信号锁存到low_sw_r中always@(posedgeclkornegedgerst_n)if(!rst_n)key_rst_r<=3'b111;elsekey_rst_r<=key_rst;//当寄存器key_rst由1变为0时,led_an的值变为高,维持一个时钟周期wire[2:0]key_an=key_rst_r&(~key_rst);//------------------------------------------------------
5、-----------reg[19:0]cnt;//计数寄存器always@(posedgeclkornegedgerst_n)if(!rst_n)cnt<=20'd0;//异步复位elseif(key_an)cnt<=20'd0;elsecnt<=cnt+1'b1;reg[2:0]low_sw;always@(posedgeclkornegedgerst_n)if(!rst_n)low_sw<=3'b111;elseif(cnt==20'hfffff)//满20ms,将按键值锁存到寄存器low_sw中cnt==20'hffffflow_sw<={sw3_n,sw2_n,sw1_n};//--
6、-------------------------------------------------------------reg[2:0]low_sw_r;//每个时钟周期的上升沿将low_sw信号锁存到low_sw_r中always@(posedgeclkornegedgerst_n)if(!rst_n)low_sw_r<=3'b111;elselow_sw_r<=low_sw;//当寄存器low_sw由1变为0时,led_ctrl的值变为高,维持一个时钟周期wire[2:0]led_ctrl=low_sw_r[2:0]&(~low_sw[2:0]);regd1;regd2;regd3;al
7、ways@(posedgeclkornegedgerst_n)if(!rst_n)begind1<=1'b0;d2<=1'b0;d3<=1'b0;endelsebegin//某个按键值变化时,LED将做亮灭翻转if(led_ctrl[0])d1<=~d1;if(led_ctrl[1])d2<=~d2;if(led_ctrl[2])d3<=~d3;endassignled_d3=d1?1'b1:1'
此文档下载收益归作者所有