FPGA 學(xué)習(xí)筆記day6
流水燈實(shí)驗(yàn)仿真昨天卡住,今天把它結(jié)束
仿真的波形長這樣

這里仔細(xì)看會(huì)發(fā)現(xiàn)led燈的狀態(tài)一直沒有發(fā)生變化。是因?yàn)?.2s才變化一次,5ms肯定看不到變化。
所以這個(gè)時(shí)候可以改一下代碼里面的延遲時(shí)間。然后再運(yùn)行仿真。
仿真的時(shí)候一方面是看這個(gè)東西的運(yùn)行效果是不是預(yù)期的那樣
另一方面就是用光標(biāo)來測量波形變化的時(shí)間或者頻率。
然后用quartus試一試
創(chuàng)建工程,然后編譯一下程序檢查有無錯(cuò)誤,
然后進(jìn)行管教分配。
打開par文件夾,里面有個(gè)qsf文件,用notepad++打開
去資料盤找這個(gè)東西

打開之后長這樣:

然后找到時(shí)鐘、復(fù)位、led燈幾個(gè)部分,拷貝到剛才的qsf文件最下面。
保存一下關(guān)閉即可。就完成了管腳的配置
這個(gè)就有點(diǎn)像當(dāng)時(shí)師兄讓用ise的時(shí)候,配置管教用的那個(gè)ucf文件,感覺是一樣的東西只不過開發(fā)環(huán)境不一樣。完成功能都是一樣的。

期間遇到的一個(gè)問題就是。打開pinplanner的時(shí)候顯示這個(gè):

解決:


可以看到這個(gè)時(shí)候這個(gè)下面的管腳配置已經(jīng)完成了
然后這個(gè)時(shí)候關(guān)掉,回去run一下,就可以生成用于下載的文件
按鍵控制led燈實(shí)驗(yàn)
一、按鍵簡介:

觸摸按鍵不算一個(gè)傳統(tǒng)的按鍵。
二、硬件設(shè)計(jì)

這里面為什么信號(hào)線出現(xiàn)在按鍵的右側(cè),直接連接到了上拉電阻左側(cè)
因?yàn)樵趯?yīng)的按鍵按下之前,其右側(cè)的電位和3.3v是一樣的,因?yàn)闆]有形成相應(yīng)的通路,沒有電流流過,上拉電阻上面也就不會(huì)存在壓降。所以這個(gè)時(shí)候不按下按鍵的時(shí)候這個(gè)東西是不被觸發(fā)的。
三、程序設(shè)計(jì):
系統(tǒng)框圖:

代碼:
module key_led(
input sys_clk,
input sys_rst_n,
input [3:0]key,
output reg [3:0]led
);
reg [23:0]counter;
reg [1:0]led_control;
always@(posedge sys_clk or negedge sys_rst_n)begin
//0.2s timer
if(!sys_rst_n)
counter<=0;
else if(counter==24'd1000_0000-1'd1)
counter<=24'd0;
else
counter<=counter+1'd1;
end?
always@(posedge sys_clk or negedge sys_rst_n)begin
if(!sys_rst_n)
led_control<=2'b0;
else if(counter==24'd999_9999)
led_control<=led_control+2'd1;
else
led_control<=led_control;
end
always@(posedge sys_clk or negedge sys_rst_n)begin
if(!sys_rst_n)
led<=4'b0000;
else if(key[0]==0)
case(led_control)
2'b00:led<=4'b1000;
2'b01:led<=4'b0100;
2'b10:led<=4'b0010;
2'b11:led<=4'b0001;
default;
endcase
else if(key[1]==0)
case(led_control)
2'b00:led<=4'b0001;
2'b01:led<=4'b0010;
2'b10:led<=4'b0100;
2'b11:led<=4'b1000;
default;
endcase
else if(key[2]==0)
case(led_control)
2'b00:led<=4'b1111;
2'b01:led<=4'b0000;
2'b10:led<=4'b1111;
2'b11:led<=4'b0000;
default;
endcase
else if(key[3]==0)
led<=4'b1111;
else
led<=4'b0000;
end
endmodule
比較簡單