FPGA組合邏輯訓練-三八譯碼器

實驗原理:

在數字電路中可以根據電路功能的不同分爲,組合邏輯電路與時序邏輯電路。

組合邏輯電路在邏輯功能上的特點是任意時刻的輸出僅僅取決於該時刻的輸入,與電路原來的狀態無關。

而時序邏輯從電路特徵上看來,其特點爲任意時刻的輸出不僅取決於該時刻的輸入,而且還和電路原來的狀態有關。

組合邏輯電路在電路結構上,不涉及對信號跳變沿的處理,無存儲電路,也沒有反饋電路,通常可以通過真值表的形式表達出來。

時序邏輯電路在電路結構上,不管輸入如何變化,僅當時鐘的沿(上升沿或下降沿)到達時,纔有可能使輸出發生變化。

譯碼器(Decoder)是一種多輸入多輸出的組合邏輯電路,負責將二進制代碼翻譯爲特定的對象(如邏輯電平等),功能與編碼器相反。譯碼器一般分爲通用譯碼器和數字顯示譯碼器兩大類,本節設計的是通用譯碼器。

以三八譯碼器爲例,即將 3 種輸入狀態翻譯成 8 種輸出狀態, 在 MCU 應用中,如果需要保證一定的速度情況下實現此功能,一般選取外掛一片 74HC38 或者 74LS38 等獨立芯片,但 FPGA 提供了一個完整的想象以及實現空間,僅靠其自身即可實現設計要求。

Verilog HDL實現

工程名稱爲:“DDC3_8”,架構圖如下:
在這裏插入圖片描述
/
端口描述:
輸入:a,b,c;
輸出:out;
功能描述:三八譯碼器真值表
*
在這裏插入圖片描述
*/
代碼實現可分爲兩部分,分別是端口列表定義和組合邏輯實現。
在這裏插入圖片描述
使用數據選擇器來實現真值表功能,由於該處已經將case中的所有情況窮舉,因此不用書寫default。{}爲位拼接操作符,always@()括號裏爲敏感信號列表。由於輸出數據out需在always塊中賦值,所以前面將out定義成reg型。
在這裏插入圖片描述
進行分析和綜合無錯誤後查看RTL視角
RTL Viewer:

在這裏插入圖片描述

testbench文件編寫

新建一個DDC3_8_tb.v文件,編寫測試激勵文件,整體代碼如下,激勵是不需要端口的,所有的信號自己內部產生,然後連接到需要測試的設計上。整體可分爲四部分:時間單位定義,激勵源定義,例化模塊以及激勵信號產生。
在這裏插入圖片描述
1.時間單位及精度
在這裏插入圖片描述
時標:`timescale 1ns/1ps

1) 前面的”`”是Esc鍵下面的鍵(和波浪線爲同一鍵)。

2) “/”前面的1ns 爲時間單位。

3) “/”後面的1ps爲時間精度。

深入理解時標的意義:在激勵中,有很多的 “# xx“,代表的意思是:延時xx ns。那麼時間精度是什麼呢?這個我們可以看看自己的存款餘額,例如:100.21元。單位是:元,精度是:0.01元(也可以理解爲:分)。對比一下,是不是一下子就理解了呢。但是,要注意,精度不能比單位大。

2.激勵源定義
在這裏插入圖片描述
將設計的輸入定義成reg的類型(在initial模塊中賦值必須是reg類型),我們在激勵當中對它們賦值,然後傳輸到設計當中。

將設計的輸出定義成wire的類型,連接到設計的輸出端口,在modelsim中查看輸出波形是否正確。

3.例化模塊
在這裏插入圖片描述
有兩種例化模塊方法,這裏選用括號裏信號順序可以隨意變更,不易出錯。

4.激勵信號產生
在這裏插入圖片描述

initial 模塊是順序執行的。我們通過延時將輸入在不同的時間段賦不同的值。”1’b1”:前面的“1“代表1bit,”‘b“代表用二進制表示(這個” ’“是單引號,一定要和tiemscale的”“區分開),後面的”1“代表高電平。$stop 是仿真的停止命令,具體的意思:當運行這個地方的時候,仿真自動停止。

激勵仿真

點擊Assignment->setting->simulation,
在這裏插入圖片描述
按上圖操作後,點擊add後ok,保存。
點擊RTL Simulation ,進行前仿真。

在這裏插入圖片描述
由上圖可知仿真沒有錯誤,關閉Modelsim。
點擊Gate Level simulation進行仿真。

在這裏插入圖片描述
發現整體數據存在一定延遲現象,但功能依然符合設計要求。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

序仿真局部波形放大 0ns 處和數據轉換處,可看出,剛開始上電時由於輸入數據需要等待一段時間纔會到達輸出端口,因此存在一定時間的未知態,並在0000_0001 到 0000_0010 轉換中出現了0000_0011(也可能是 0000_0000)這一數據。這是由於門電路在上面兩個狀態轉換中, 其實際轉換過程爲0000_0001→0000_0011→0000_0010 或者 0000_0001→0000_0000→0000_0010。對於轉換過程中出現的錯誤數據只能在後期進行數據篩選而沒有辦法避免。

開發板燒錄配置

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