VHDL編碼風(fēng)格
1. 在不是不得以的情況的話,不是用異步設(shè)計(jì)。而應(yīng)該使用同步設(shè)計(jì)。
2. 分割模塊
把一個(gè)設(shè)計(jì)分割為幾個(gè)易于管理的塊,有利于團(tuán)隊(duì)工作。如果只有一個(gè)主要功能模塊則分為幾個(gè)子模塊。遵循SPEC分割。
3. 復(fù)位
要對(duì)DFF和LATCH進(jìn)行復(fù)位。設(shè)計(jì)時(shí)采用異步復(fù)位。復(fù)位信號(hào)要直接連入FF。
4. 對(duì)于FF的輸出要用非阻塞語(yǔ)句。每個(gè)FF只能在一個(gè)always塊中賦值。FF最好規(guī)定單沿觸發(fā)。
5. 有些地方也不一定要用非阻塞語(yǔ)句。比如要從一個(gè)時(shí)鐘產(chǎn)生另一個(gè)時(shí)鐘時(shí):
always @(posedge clka)
clkb = ~clka;
6. 有些時(shí)候也不是必須要統(tǒng)一一個(gè)沿觸發(fā),如DDR。
7. 組合邏輯
簡(jiǎn)單的組合邏輯用連續(xù)賦值實(shí)現(xiàn)。復(fù)雜的用always。描述組合邏輯時(shí),一個(gè)需要注意的是latch的引入,要把if和case 的條件寫全。
8. 組合的case
在case前賦值,來使case條件完備,不會(huì)出現(xiàn)額外的latch
9. 選擇器
來源:零八我的愛0次