時(shí)鐘是整個(gè)FPGA設(shè)計(jì)里面無(wú)法回避的事物,不能認(rèn)識(shí)時(shí)鐘也就沒(méi)法做FPGA設(shè)計(jì)。
· 時(shí)鐘控制執(zhí)行順序·
上文解釋了DL程序的并行性,但在設(shè)計(jì)中需要像C/C++語(yǔ)言的串行控制功能,如先接收外部配置指定,然后接收數(shù)據(jù)并完成模塊內(nèi)部配置,再將配置結(jié)果反饋到外部,這需要通過(guò)時(shí)間的精確定位來(lái)獲取嚴(yán)格的先后關(guān)系。
那么怎么來(lái)實(shí)現(xiàn)呢其實(shí)很簡(jiǎn)單,假設(shè)全部事件需要5個(gè)時(shí)鐘周期,那么利用一個(gè)周期為5的循環(huán)計(jì)數(shù)器來(lái)實(shí)現(xiàn)。在計(jì)數(shù)器為1的時(shí)候,完成事件1;在計(jì)數(shù)器為2的時(shí)候,完成事件2:……如此循環(huán)即可。總結(jié)起來(lái)就是按照時(shí)鐘節(jié)拍來(lái)完成串行控制。
當(dāng)然,這樣的電路在FPGA資源的利用上是存在浪費(fèi)的,因?yàn)樵趫?zhí)行事件1,用于執(zhí)行事件2,3,4,5的邏輯處于等待狀態(tài),但其卻始終占用著邏輯資源,也就是這部分電路沒(méi)有使能,但是依然存在于FPGA內(nèi)部。
· 實(shí)例分析·
請(qǐng)看如下代碼,建議手動(dòng)輸入到ise里面,動(dòng)手綜合后看看實(shí)現(xiàn)的RTL圖,看懂電路原理。
上述代碼綜合后RTL圖如下,淺藍(lán)色圓圈圈住的是生成的3個(gè)加法器,就是計(jì)算cnt和y1,y2的3個(gè)加法器。黃色方框里面的是觸發(fā)器,負(fù)責(zé)將結(jié)果輸出和反饋到加法器輸入。
仿真的波形圖如下圖,可以看出,每4個(gè)時(shí)鐘周期計(jì)算一次結(jié)果,y1永遠(yuǎn)比y2提前一個(gè)時(shí)鐘周期出結(jié)果,y1的值永遠(yuǎn)在捕捉到cnt=0的一個(gè)上升沿更新,y2永遠(yuǎn)在捕獲到cnt=1的上升沿更新。這也是造成y1提前一周期的原因,所有的狀態(tài)翻轉(zhuǎn)都是根據(jù)cnt的狀態(tài)變化來(lái)的,而cnt的變化是時(shí)鐘節(jié)拍決定的。大家理解好這個(gè)例程,也就明白了如何用時(shí)鐘操控電路,按照你的想法去運(yùn)行,同時(shí)學(xué)會(huì)了一段式狀態(tài)機(jī)的應(yīng)用。
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
27134 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2284瀏覽量
96025 -
RTL
+關(guān)注
關(guān)注
1文章
388瀏覽量
60661 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2032瀏覽量
61870 -
C++語(yǔ)言
+關(guān)注
關(guān)注
0文章
147瀏覽量
7222
發(fā)布評(píng)論請(qǐng)先 登錄
數(shù)字電路之時(shí)鐘切換電路解析

對(duì)更換時(shí)鐘源的實(shí)際應(yīng)用
機(jī)器人的控制系統(tǒng)
單片機(jī)時(shí)鐘電路原理圖

單片機(jī)時(shí)鐘電路
51單片機(jī)時(shí)鐘電路圖匯總(八款單片機(jī)時(shí)鐘電路圖)

評(píng)論