0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教你如何用時鐘操控電路

電子工程師 ? 來源:未知 ? 作者:工程師曾暄茗 ? 2018-09-22 15:32 ? 次閱讀

· 時鐘控制執(zhí)行順序·

上文解釋了DL程序的并行性,但在設(shè)計中需要像C/C++語言的串行控制功能,如先接收外部配置指定,然后接收數(shù)據(jù)并完成模塊內(nèi)部配置,再將配置結(jié)果反饋到外部,這需要通過時間的精確定位來獲取嚴格的先后關(guān)系。

那么怎么來實現(xiàn)呢其實很簡單,假設(shè)全部事件需要5個時鐘周期,那么利用一個周期為5的循環(huán)計數(shù)器來實現(xiàn)。在計數(shù)器為1的時候,完成事件1;在計數(shù)器為2的時候,完成事件2:……如此循環(huán)即可??偨Y(jié)起來就是按照時鐘節(jié)拍來完成串行控制。當(dāng)然,這樣的電路在FPGA資源的利用上是存在浪費的,因為在執(zhí)行事件1,用于執(zhí)行事件2,3,4,5的邏輯處于等待狀態(tài),但其卻始終占用著邏輯資源,也就是這部分電路沒有使能,但是依然存在于FPGA內(nèi)部。

· 實例分析·

請看如下代碼,建議手動輸入到ise里面,動手綜合后看看實現(xiàn)的RTL圖,看懂電路原理

moduleclk_module(clk,reset,a1,y1,y2);

inputclk;

inputreset;

input[7:0]a1;

output[7:0]y1,y2;

reg[7:0]y1,y2;

reg[1:0]cnt;

always@(posedgeclk)begin

if(!reset)begin

cnt<=?0;??

y1<=?0;??

y2<=?0;??

end

elsebegin

if(cnt==2'b11)

cnt<=?2'b00;??

else

cnt<=?cnt?+?2'b01;??

//------------//

case(cnt)

2'b00:begin

y1<=?a1?+?2'b01;??

y2<=?y2;??

end

2'b01:begin

y1<=?y1;??

y2<=?y1?+?2'b01;??

end

default:begin

y1<=?y1;??

y2<=?y2;??

end

endcase

end

end

endmodule

上述代碼綜合后RTL圖如下,淺藍色圓圈圈住的是生成的3個加法器,就是計算cnt和y1,y2的3個加法器。黃色方框里面的是觸發(fā)器,負責(zé)將結(jié)果輸出和反饋到加法器輸入。

仿真的波形圖如下圖,可以看出,每4個時鐘周期計算一次結(jié)果,y1永遠比y2提前一個時鐘周期出結(jié)果,y1的值永遠在捕捉到cnt=0的一個上升沿更新,y2永遠在捕獲到cnt=1的上升沿更新。這也是造成y1提前一周期的原因,所有的狀態(tài)翻轉(zhuǎn)都是根據(jù)cnt的狀態(tài)變化來的,而cnt的變化是時鐘節(jié)拍決定的。大家理解好這個例程,也就明白了如何用時鐘操控電路,按照你的想法去運行,同時學(xué)會了一段式狀態(tài)機的應(yīng)用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7594

    瀏覽量

    135858
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2100

    瀏覽量

    73453

原文標題:面向硬件的設(shè)計思維--時鐘是電路的實際控制者

文章出處:【微信號:HaveFunFPGA,微信公眾號:玩兒轉(zhuǎn)FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    時鐘樹優(yōu)化與有用時鐘延遲

    時鐘樹優(yōu)化與有用時鐘延遲在 “后端時序修正基本思路” 提到了時序優(yōu)化的基本步驟。其中,最關(guān)鍵的階段就是時鐘樹建立。
    發(fā)表于 10-26 09:29 ?4369次閱讀
    <b class='flag-5'>時鐘</b>樹優(yōu)化與有<b class='flag-5'>用時鐘</b>延遲

    FPGA的設(shè)計中的時鐘使能電路

    時鐘使能電路是同步設(shè)計的重要基本電路,在很多設(shè)計中,雖然內(nèi)部不同模塊的處理速度不同,但是由于這些時鐘是同源的,可以將它們轉(zhuǎn)化為單一的時鐘
    的頭像 發(fā)表于 11-10 13:53 ?5403次閱讀
    FPGA的設(shè)計中的<b class='flag-5'>時鐘</b>使能<b class='flag-5'>電路</b>

    【RA系列】用時鐘頻率精度測量電路進行時間校驗

    【RA系列】用時鐘頻率精度測量電路進行時間校驗
    的頭像 發(fā)表于 11-25 08:06 ?540次閱讀
    【RA系列】<b class='flag-5'>用時鐘</b>頻率精度測量<b class='flag-5'>電路</b>進行時間校驗

    如何看時序圖,如何用時序圖

    如何看時序圖,如何用時序圖?求一些詳細的資料。
    發(fā)表于 01-21 12:29

    教你何用DSP驅(qū)動LCD彩色液晶

    `教你何用DSP驅(qū)動LCD彩色液晶,DSP在手持設(shè)備上的應(yīng)用。`
    發(fā)表于 08-19 10:01

    請問一下STM32如何用時鐘源來產(chǎn)生時鐘?

    請問一下STM32如何用時鐘源來產(chǎn)生時鐘
    發(fā)表于 11-24 07:48

    快速跳頻無線電臺用時鐘

    快速跳頻無線電臺用時鐘 要使“極好”的跟蹤干擾臺失去作用,要求跳頻速率
    發(fā)表于 11-24 12:42 ?1008次閱讀
    快速跳頻無線電臺<b class='flag-5'>用時鐘</b>

    手把手教你做彩鈴電子時鐘--第3章

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 17:10 ?6次下載

    手把手教你做彩鈴電子時鐘---第4章

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 17:09 ?12次下載

    手把手教你做彩鈴電子時鐘---第9章

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 17:03 ?10次下載

    手把手教你做彩鈴電子時鐘---第11章

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 17:02 ?11次下載

    手把手教你做彩鈴電子時鐘---后語

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 16:54 ?6次下載

    手把手教你做電子時鐘---前言

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 16:53 ?11次下載

    如何使用時序約束向?qū)?/a>

    了解時序約束向?qū)?b class='flag-5'>何用于“完全”約束您的設(shè)計。 該向?qū)ё裱璘ltraFast設(shè)計方法,定義您的時鐘時鐘交互,最后是您的輸入和輸出約束。
    的頭像 發(fā)表于 11-29 06:47 ?2969次閱讀
    如何使<b class='flag-5'>用時</b>序約束向?qū)? />    </a>
</div>                            <div   id=

    何用時鐘振蕩器產(chǎn)生穩(wěn)定的100hz或1hz的時鐘信號?

    何用時鐘振蕩器產(chǎn)生穩(wěn)定的100hz或1hz的時鐘信號? 時鐘信號是電子系統(tǒng)中至關(guān)重要的組成部分,用于同步各種信號和操作。它需要穩(wěn)定、準確、可靠地工作,以確保系統(tǒng)性能。時鐘信號的產(chǎn)生可
    的頭像 發(fā)表于 10-25 15:07 ?1730次閱讀