在HDL的循環語句中,在指定的循環過程中,其代碼塊(循環體)輸出同名信號,則構成順序-循環(SAS-LOOP),其代碼塊(循環體)輸出不同名信號,則構成并發-循環(CAS-LOOP)。
包括循環語句(含循環體)組成的代碼塊,EDA稱為循環框架(Loop Frame)。
在這里,HDL循環語句與算法語言的循環語句的差異:
1.HDL的循環變量i是以常量進入循環體。算法語言則是以變量進入循環體。
2.HDL的循環體并不被循環執行,而是被重復描述(多次重復綜合),從而實現建模的效率。算法語言的循環體則一定是被循環執行。
循環語句可綜合性的“數學歸納法”
數學歸納法常用于證明數學序列,它的要點是:
1.首先證明序列的基數成立
2.假設序列為N時成立
3.證明序列的N+1成立
HDL的循環語句是否可綜合,可以借用這個方法:
1.首先將循環語句的循環次數修改為一個很小的基數。由于在很小的基數時,其電路一定可以用結構化方法直接描述(不使用循環語句)
2.將基數加1,仍然可以是結構化描述,并加以驗證
3.將基數修改為LPM參數可定制,使用循環語句描述,并加以驗證
4.修改LPM定制參數,將其加1,觀察其綜合結果(驗證)
通過以上步驟,可以證明所編寫的HDL循環語句是可綜合的,并且具有很高的綜合效率。
循環語句設計例子:具有64個輸入端口的8位異或電路:
使用“數學歸納法”為其使用循環語句建模和驗證:
1.將基數(端口數)設定為4,得到:
RTL視圖(驗證過程):
2.將基數加1,這里將端口數修改為8,得到:
RTL視圖(驗證過程):
修改為端口數可定制的LPM模型
其RTL視圖:
現在將LPM的基數+1(修改端口指數PortNum_Power為4)
其RTL視圖:
以上就是循環語句構成二叉樹異或門的過程,為了得到最終結果(64端口),將端口指數PortNum_Power=6,得到:
這里由于端口數過多,EDA的自動繪圖需要中間過程,故首層僅展示如上部分。
循環語句可綜合性的設計例子二:同步計數器的結構化設計
1.頂層框圖
2.代碼和代碼模型分析
其RTL視圖:
以上視圖中,當rst_n=0時,多路器指向常數0;當rst_n=1時,多路器指向加法器的輸出;注意加法器是寄存器的輸出q與1相加。
根據代碼模型和RTL視圖,可以得到等效節點模型:
若將復位信號的條件語句描述屏蔽,則得到RTL視圖更接近節點等效:
3.計數器的數學模型
在RTL視圖中,計數器有限自動機的加法器執行q+1(的描述),其真實的電路是得到優化和簡化的一個數學模型:
若Q序列表示為:
在時鐘離散時刻,Q的變化為:
觀察表格,能夠發現Q的每一個比特位翻轉的規律:
()
(, )
(, )
……
(, )
將觸發翻轉的條件(前級全部為1)采用級聯以減少面積:
(,)
(, )
(, )
……
(, )
式中:
…….
注意位翻轉的一般表達式:(, )
其真值表為:
其SOP為:
代入序列中,得到:
……
根據數學模型得到的代碼模型為:
編輯:jq
-
eda
+關注
關注
71文章
2709瀏覽量
172907 -
HDL
+關注
關注
8文章
327瀏覽量
47341 -
RTL
+關注
關注
1文章
385瀏覽量
59706 -
代碼
+關注
關注
30文章
4751瀏覽量
68359 -
LPM
+關注
關注
0文章
11瀏覽量
9940
原文標題:FPGA學習:循環語句的可綜合性
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論