FPGA 的筆記總結(未完結。。。)

1、組合邏輯

組合邏輯是指輸出只與當前的輸入邏輯電平有關,與電路的原始狀態無關的邏輯電路,屬於無記憶電路,常用於多路器、加法器、譯碼器等

1.1 assign語句實現

問號表達式的形式
assign data_out = en ? a:b;

1.2 always塊實現

一般的應用主要在三段式狀態機中的狀態轉移判斷中,三段式狀態機語句分別爲:次態遷移到現態、狀態轉移條件判斷、次態寄存器輸出。

//參數聲明
parameter IDLE = 2'b00;
parameter S0 = 2'b01;
parameter S1 = 2'b10;

//內部信號聲明
reg[1:0] current_state;
reg[1:0] next_state;

//信號輸出

reg data_out;

//第一段:狀態寄存器的保存

always @ (posedge clk or negedge Rst_n)
begin 
    if(!Rst_n) 
        current_state <= IDLE; 
    else 
        current_state <= next_state; 
end

//第二段 次態的組合邏輯 
always @ (w_i or current_state) 
begin 
    case(current_state) 
    IDLE:begin 
            if(w_i) next_state = S0; 
             else next_state = IDLE; 
        end 
    S0: begin 
            if(w_i) next_state = S1; 
            else next_state = IDLE; 
        end 
    S1: begin 
            if(w_i) next_state = S1; 
            else next_state = IDLE; 
        end 
    default : next_state = 2'bxx; 
    endcase 
end

//第三段:輸出邏輯 
always @ (*) 
beign 
    case(current) 
        IDLE:   data_out = 1'b0; 
        S0:     data_out = 1'b0; 
        S1:     data_out = 1'b1; 
        default: data_out = 1'bz; 
    endcase 
end

2、時序邏輯電路

時序邏輯電路是含有存儲元件(如D觸發器)能夠暫存信息,有記憶性,一般通過always語句塊實現,可以利用posedge和negedge來捕獲時鐘上升或下降沿描述時序邏輯電路。

3、狀態機

3.1 摩爾狀態機

框圖

摩爾狀態機
代 碼如1.2節

3.2 米利狀態機

[框圖]

米利狀態機
代碼

//第一段:狀態寄存器的保存

always @ (posedge clk )
begin 
    current_state <= next_state; 
end

//第二段 組合邏輯和狀態輸出 
always @ (w_i or current_state) 
begin 
    case(current_state) 
    IDLE:begin 
            data_out = 1'bz;
            if(w_i) next_state = S0; 
             else next_state = IDLE; 
        end 
    S0: begin 
            data_out = 1'b0; 
            if(w_i) next_state = S1; 
            else next_state = IDLE; 
        end 
    S1: begin 
            data_out = 1'b1;
            if(w_i) next_state = S1; 
            else next_state = IDLE; 
        end 
    default : next_state = 2'bxx; 
    endcase 
end

3、如何在Quartus II軟件中生成自定義IP CORE?

描述
您可以使用Quartus®II軟件通過以下步驟生成自定義的IPCORE:

1.創建一個新項目,添加客戶verilog / VHDL代碼文件,然後將此文件設置爲頂級實體。然後運行Analysis&Elaboration。

2.選擇Quartus II軟件菜單(Project - > Export Design Partation …)並生成xxx.qxp文件。

3.使用生成的xxx.qxp文件作爲IPCORE。

8、數字控制振盪器(NCO)

10、LPM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章