本文包含以下幾方面內(nèi)容,程序設計,模塊例化、運算符,模塊設計模板
目標:用最簡單,最簡潔的方式,設計最易讀,最高效的代碼
1、程序設計
1)設計時不用的語法
2)設計時使用的語法,主要為下述a,b,c三類
3)電路設計結(jié)構(gòu),主要有以下三種
??
4)電路設計要點
[1]一個always只產(chǎn)生一個信號
下述不合適
改為下述,只考慮一個信號,調(diào)試,分析,代碼修改很方便,不需要考慮很多
[2]一個信號只在一個always中產(chǎn)生
下述不符合要求,在多個always中產(chǎn)生
[3]always是描述一個信號產(chǎn)生的方法,即在什么情況下,信號值為多少,其它情況下,值又為多少,情況要全部考慮
[4] 條件判斷只允許使用if else和case,其它的不使用(包括casex);
[5] 含有posedge或negedge的,一定是D觸發(fā)器,是時序電路
[6] 想立即有結(jié)果用組合邏輯,延遲一拍有結(jié)果用時序邏輯
2、模塊例化
1)什么是例化,簡單到復雜
2)例化方法
3)參數(shù)例化
? ??
3、運算符
1)信號類型reg/wire
(1)設計代碼僅用reg,wire兩種類型
(2)設計代碼中,由本模塊且是always產(chǎn)生的信號,為reg類型
(3)測試代碼中,用initial產(chǎn)生的對測試模塊的輸入信號,用reg類型
(4)其它情況都用wire
(5)reg類型的信號,不一定產(chǎn)生寄存器
2)參數(shù)parameter
(1)將整個模塊中的CNT_C_W替換成12
(2)參數(shù)名用大寫
3)算術(shù)運算符(+,-,*,/,%)
(1)+,-,*用的多,/,%少用,消耗資源多,用的少
4)賦值運算符(=,<=),注:時序邏輯用<=,組合邏輯用=,其它情況不存在
(1)時序邏輯用<=
(2)組合邏輯用=
5)關系運算符(>,<,>=,<=)
6)邏輯運算符(&&,||,?。?/p>
(1)一般兩邊都是1bit信號,多Bit也可以
(2)一般用于條件判斷
7)位運算符(~,|,^,&)
(1)一般用于賦值
8)移位運算符(<<,>>)
(1)一般用于乘除運算
(2)右移1位表示除2,左移1位表示乘2
9)拼接運算符({ })
(1){a[0],b[3:2]}
(2){{3{a[0]}},b[2],a[1]}
4、模塊設計模板
1)解析電路功能
下圖為自加1的電路圖,左邊為組合邏輯,右邊為時序邏輯
2)修改電路設計模塊
verilog模板
規(guī)則:輸出信號必須打一拍送出去,所以會在always中賦值,所以輸出信號定義為reg類型
先定義,位寬參數(shù),輸入,輸出,中間信號,編寫組合邏輯,時序邏輯代碼,下述為上圖加法器代碼
-
IC設計
+關注
關注
37文章
1290瀏覽量
103694 -
Verilog
+關注
關注
28文章
1343瀏覽量
109925 -
程序
+關注
關注
116文章
3756瀏覽量
80751 -
Verilog設計
+關注
關注
0文章
20瀏覽量
6509
發(fā)布評論請先 登錄
相關推薦
評論