2.2多用模板專注設(shè)計(jì)-(mdy-edu.com)
本文的文檔編號:001400000010
需要看對應(yīng)的視頻,請點(diǎn)擊視頻編號:001400000088
1、介紹了MDY最常用的至簡設(shè)計(jì)verilog代碼模板,以及如何調(diào)用和使用該模板的方法
第二章?多用模板專注設(shè)計(jì)
進(jìn)行工程設(shè)計(jì)的過程中,在親手完成了部分工程的設(shè)計(jì)后就會發(fā)現(xiàn)其實(shí)大多數(shù)工程都有一定的“套路”。因此至簡設(shè)計(jì)法制作了verilog代碼模板,該模板包含了verilog最常用的代碼,只要按照模板提示的步驟進(jìn)行思考和填空,就能得到簡潔、漂亮的代碼。當(dāng)然這種方法也會減少一定的錯誤率,畢竟相比一個字符一個字符的輸入,一定是部分字符填空更加簡單便捷且錯誤率低。
有人認(rèn)為至簡設(shè)計(jì)法模板僅僅是為了節(jié)省敲代碼的時間,這種想法其實(shí)是錯誤的。至簡設(shè)計(jì)法旨在用一套固有的思想方法來應(yīng)對不同的設(shè)計(jì),力求使用最簡潔的語言,最直接的算法得到最省資源的代碼。同樣,至簡設(shè)計(jì)法的模板更多地是將至簡設(shè)計(jì)法的設(shè)計(jì)經(jīng)驗(yàn)轉(zhuǎn)化到模板當(dāng)中,每個模板看起來毫無關(guān)系,但其實(shí)都是工程設(shè)計(jì)中必不可少的步驟。這種方法也會時刻提醒設(shè)計(jì)者按照規(guī)范的思路進(jìn)行編碼,不會中途“開小差,走跑偏”,利用模板完整的將整個工程串起來才是至簡設(shè)計(jì)法的目的。
第1節(jié)?至簡設(shè)計(jì)法模板總表
下表為至簡設(shè)計(jì)法現(xiàn)有可供使用的模板,后續(xù)還會不斷的進(jìn)行完善補(bǔ)充。為了方便查閱,下面列出模板總表,隨后會依次單獨(dú)演示相應(yīng)模板的使用方法。使用這些模板需要按照提示正確安裝至簡設(shè)計(jì)法提供的GVIM軟件,也可以前往至簡設(shè)計(jì)法網(wǎng)址:XXXXXXX進(jìn)行下載使用。本書只能通過文字以及截圖的形式進(jìn)行描述和演示,可以登陸至簡設(shè)計(jì)法官網(wǎng)觀看使用視頻,網(wǎng)址為:XXXXXXXXXXXX。
? ?? ?? ?? ?? ?? ???表2.2- 1至簡設(shè)計(jì)法模板總表
??

為便于理解,下面將依次對各模板進(jìn)行單獨(dú)演示。
2.1?模塊設(shè)計(jì)模板
在編輯模式下輸入“Module”,注意首字母“M”需要大寫,如下圖所示:? ? ? ? ? ? ? ? ? ? ??

圖2.2-1??調(diào)用模塊設(shè)計(jì)模板
按下“回車”鍵后編輯欄會出現(xiàn)模塊設(shè)計(jì)模板,此處主要是為結(jié)構(gòu)設(shè)計(jì)提供參考,如下圖所示,將其補(bǔ)充完整即可。

圖2.2-2??模塊設(shè)計(jì)模板調(diào)用結(jié)果
2.2?時序邏輯模板
(1)常用時序always模板
在編輯模式下輸入“Shixu”,注意首字母“S”需要大寫,如下圖所示.

圖2.2-3??調(diào)用時序模板
按下“回車”鍵后編輯欄會出現(xiàn)最常用的時序always模板,如下圖所示,此模板中時鐘和復(fù)位代碼一般無需改變,只需要填寫相應(yīng)條件將代碼補(bǔ)充完整即可。

圖3.2-4??時序模板調(diào)用結(jié)果
(2)存在條件的時序always模板
在時序語句中經(jīng)常會存在若干嵌套條件,在這種情況下,調(diào)用時可以在“Shixu”后面加上條件的數(shù)量。如存在2個條件時,應(yīng)在編輯模式下輸入“Shixu2”。同樣的,首字母“S”需要大寫,如下圖所示。

圖2.2-5??調(diào)用2個條件的時序模板
按下“回車”鍵后編輯欄會出現(xiàn)2個條件的時序always模板,如下圖所示。同樣在此模板中時鐘和復(fù)位代碼一般無需改變,只需要填寫相應(yīng)條件將代碼補(bǔ)充完整即可。

圖2.2-6??2個條件的時序模板調(diào)用結(jié)果
同樣的,如果要調(diào)用3個條件的時序always模板,應(yīng)在編輯模式下輸入“Shixu3”,如下圖所示。

圖2.2-7??調(diào)用3個條件的時序模板
按下“回車”鍵后編輯欄會出現(xiàn)3個條件的時序always模板,如下圖所示。同樣的,此模板一般只需填寫相應(yīng)條件將代碼補(bǔ)充完整即可。

圖2.2-8???3個條件的時序模板調(diào)用結(jié)果
2.3?組合邏輯模板
(1)組合邏輯always模板
在編輯模式下輸入“Zuhe”,注意首字母“Z”大寫,如下圖所示。

圖2.2-9??調(diào)用組合邏輯模板
按下“回車”鍵后編輯欄會出現(xiàn)1個組合邏輯always模板,如下圖所示,將其補(bǔ)充完整即可。

圖2.2-10??組合邏輯模板調(diào)用結(jié)果
(2)有條件的組和邏輯always模板
當(dāng)存在若干嵌套條件的情況下,進(jìn)行調(diào)用時可以在“Zuhe”后面加上條件的數(shù)量。如要調(diào)用有2個條件的組合邏輯模板,在編輯狀態(tài)下輸入“Zuhe2”,首字母“Z”大寫,如下圖所示。

圖2.2-11??調(diào)用2個條件的組合邏輯模板
按下“回車”鍵后編輯欄會出現(xiàn)有條件的邏輯always模板,如下圖所示,將其補(bǔ)充完整即可。

圖2.2-12??2個條件的組合邏輯模板調(diào)用結(jié)果
2.4?計(jì)數(shù)器模板
(1)1個計(jì)數(shù)器模板
在編輯模式下輸入“Jsq”,注意首字母“J”需要大寫,如下圖所示。

圖2.2-13??調(diào)用1個計(jì)數(shù)器模板
按下“回車”鍵后編輯欄會出現(xiàn)1個計(jì)數(shù)器模板,如下圖所示。在此模板中需要考慮計(jì)數(shù)器的加1條件以及最終加數(shù)的大小,將add_cnt和end_cnt代碼補(bǔ)充完整即可。

圖2.2-14??1個計(jì)數(shù)器模板的調(diào)用結(jié)果
(2)多個計(jì)數(shù)器模板
當(dāng)需要調(diào)用多個計(jì)數(shù)器時,可以在“Jsq”后加上調(diào)用計(jì)數(shù)器的個數(shù),如需要調(diào)用兩個計(jì)數(shù)器模板,應(yīng)在編輯模式下輸入“Jsq2”,首字母“J”大寫,如下圖所示。

圖2.2-15??調(diào)用2個計(jì)數(shù)器模板
按下“回車”鍵,編輯欄會出現(xiàn)2個計(jì)數(shù)器模板,如下圖所示,考慮相應(yīng)條件后將代碼補(bǔ)充完整即可。

圖2.2-16??2個計(jì)數(shù)器模板調(diào)用結(jié)果
同樣,如果要3個計(jì)數(shù)器模板則要在編輯模式下輸入“Jsq3”,如下圖所示。

圖2.2-17??調(diào)用3個計(jì)數(shù)器模板
按下“回車”鍵,編輯欄會出現(xiàn)3個計(jì)數(shù)器模板,如下圖所示,考慮相應(yīng)條件后將代碼補(bǔ)充完整即可。

圖2.2-18??3個計(jì)數(shù)器模板調(diào)用結(jié)果
(3)增加1個計(jì)數(shù)器模板
調(diào)用計(jì)數(shù)器模板還有另外一種方法,這種方法可以在已有的計(jì)數(shù)器模板后加入新的計(jì)數(shù)器模板。如下圖所示,在命令模式下輸入“:call MDYJSQ()”,此處需注意大小寫的轉(zhuǎn)換。

圖2.2-19??增加1個計(jì)數(shù)器模板
按下“回車”鍵,可以看到編輯欄同樣會出現(xiàn)1個計(jì)數(shù)器模板,如下圖所示,在此模板中同樣需要考慮后將相應(yīng)代碼補(bǔ)充完整即可。同樣,如果此時已經(jīng)存在計(jì)數(shù)器cnt0,也可以利用該方法新增1個計(jì)數(shù)器,新的計(jì)數(shù)器會自動命名為cnt1。

圖2.2-20??增加1個計(jì)數(shù)器模板的調(diào)用結(jié)果
2.5?狀態(tài)機(jī)模板
(1)一般的狀態(tài)機(jī)模板
在編輯模式下輸入“Ztj”,注意首字母“Z”需要大寫,如下圖所示。

圖2.2-21??調(diào)用狀態(tài)機(jī)模板
按下“回車”鍵后編輯欄會出現(xiàn)狀態(tài)機(jī)模板,如下圖所示。

圖2.2-22??狀態(tài)機(jī)模板調(diào)用結(jié)果
(2)具有多個狀態(tài)多個跳轉(zhuǎn)條件的狀態(tài)機(jī)模板
需要調(diào)用多個狀態(tài)多個條件的狀態(tài)機(jī)模板時,可以在相應(yīng)代碼后加入狀態(tài)數(shù)量、名稱以及跳轉(zhuǎn)條件以實(shí)現(xiàn)調(diào)用。如需要調(diào)用具有3個狀態(tài)且有5個跳轉(zhuǎn)條件的狀態(tài)機(jī)模板,則在命令模式下輸入“:call MDYZTJ(3,”S1”,”S2”,”S3”,12,13,23,32,31)”,如下圖所示,注意大小寫區(qū)分。其中“3”代表狀態(tài)的數(shù)量,”S1”,”S2”,”S3”分別為三個狀態(tài)的名稱,“12,13,23,32,31”代表跳轉(zhuǎn)條件,如“12”代表從狀態(tài)1跳轉(zhuǎn)到狀態(tài)2,“13”代表狀態(tài)1跳轉(zhuǎn)到狀態(tài)3,以此類推。

圖2.2-23??調(diào)用具有3個狀態(tài)5個跳轉(zhuǎn)條件的狀態(tài)機(jī)模板
按下“回車”鍵后編輯欄會出現(xiàn)具有3個狀態(tài)且有5個跳轉(zhuǎn)條件的狀態(tài)機(jī)模板,如下圖所示。

圖2.2-24??具有3個狀態(tài)5個跳轉(zhuǎn)條件的狀態(tài)機(jī)模板的調(diào)用結(jié)果
2.6?測試文件模板
在編輯模式下輸入“Test”,注意首字母“T”需要大寫,如下圖所示。

圖2.2-25??調(diào)用測試文件模板
按下“回車”鍵后編輯欄會出現(xiàn)測試文件模板,如下圖所示??梢栽诖嘶A(chǔ)上完成模塊例化,從而實(shí)現(xiàn)文件測試。

圖2.2-26??調(diào)用測試文件模板
2.7 reg類型代碼模板
以位寬為4為例,如果要調(diào)用位寬為4的reg類型代碼的模板,需在編輯模式下輸入“Reg4”,注意首字母“R”需要大寫,如下圖所示。

圖2.2-27??調(diào)用位寬為4的reg型模板
按下“回車”鍵后編輯欄會出現(xiàn)位寬為4的reg型代碼定義,如下圖所示。

圖2.2-28??位寬為4的reg型模板調(diào)用結(jié)果
2.8 wire類型代碼模板
以位寬為32為例,如果要調(diào)用位寬為32的wire類型代碼的模板,需在編輯模式下輸入“Wire32”,注意首字母“W”需要大寫,如下圖所示。

圖2.2-29??調(diào)用位寬為32的wire型模板
按下“回車”鍵后編輯欄會出現(xiàn)位寬為32的wire信號定義,如下圖所示。

圖2.2-30??位寬為32的wire型模板調(diào)用結(jié)果
2.9?輸入信號定義模板
以位寬為8的輸入信號為例,在編輯模式下輸入“Input8”,注意首字母“I”需要大寫,如下圖所示。

圖2.2-31??調(diào)用位寬為8的輸入信號模板
按下“回車”鍵后編輯欄會出現(xiàn)位寬為8的輸入信號定義,如下圖所示。

圖2.2-32??位寬為8的輸入信號模板調(diào)用結(jié)果
同樣,若輸入信號位寬為16時,在編輯模式下輸入“Input16”,如下圖所示。

圖2.2-33??調(diào)用位寬為16的輸入信號模板
按下“回車”鍵后編輯欄會出現(xiàn)位寬為16的輸入信號定義,如下圖所示。

圖2.2-34??位寬為16的輸入信號模板調(diào)用結(jié)果
2.10?輸出信號定義模板以位寬為16的輸出信號為例,在編輯模式下輸入“Output16”,注意首字母“O”需要大寫,如下圖所示。

圖2.2-35??調(diào)用位寬為16的輸出信號模板
按下“回車”鍵后編輯欄會出現(xiàn)位寬為16的輸出信號定義,如下圖所示。

圖2.2-36??位寬為16的輸出信號模板調(diào)用結(jié)果
同樣的,若調(diào)用位寬為32的輸出信號模板,需在編輯狀態(tài)下輸入“Output32”,如下圖所示。

圖2.2-37??調(diào)用位寬為32的輸出信號模板
按下“回車”鍵后編輯欄會出現(xiàn)位寬為32的輸出信號定義,如下圖所示。

圖2.2-38??位寬為32的輸出信號模板調(diào)用結(jié)果
2.11 initial語句模板
調(diào)用initial語句模板需在編輯模式下輸入“Initial”,注意首字母“I”需要大寫,如下圖所示。

圖2.2-39??調(diào)用initial語句模板
按下“回車”鍵后編輯欄會出現(xiàn)用于調(diào)用測試文件中initial段的語句,如下圖所示。語句中補(bǔ)充了#1延時,請注意不要刪除。

圖2.2-40??initial語句模板調(diào)用結(jié)果