• <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>

    24小時(shí)聯(lián)系電話(huà):18217114652、13661815404

    中文

    您當前的位置:
    首頁(yè)>
    電子資訊>
    行業(yè)資訊>
    有限狀態(tài)機的初始狀態(tài)...

    行業(yè)資訊

    有限狀態(tài)機的初始狀態(tài)與內存辯論


    狀態(tài)機有幾種編碼,最流行的是二進(jìn)制,格雷和一鍵編碼。對于人類(lèi)而言,選擇使用哪種編碼是一項艱巨的任務(wù)。這就是為什么最好讓編譯器為您選擇此項。

    設計中的FSM

    現在,您可以使用上述技術(shù)來(lái)設計MealyMoore狀態(tài)機,一旦掌握了這些技巧,就很有趣,也很有趣。

    但是,除了學(xué)校的項目外,您真的 需要多久使用一種狀態(tài)機,該狀態(tài)機具有我們剛剛設計的那種任意行為?幾乎總是!乍一看可能并不明顯,但是您可以采用自頂向下的方法將系統描述為一系列狀態(tài)。此序列可以繪制為狀態(tài)圖,也可以記錄為狀態(tài)表。獲得該表示后,您就可以自由編寫(xiě)HDL代碼。

    注意,在我們的示例中,您可能會(huì )或可能不會(huì )最終使用諸如y之類(lèi)的輸出變量,這很好,因為許多狀態(tài)機僅指示系統的行為,并且這種行為可以在專(zhuān)用狀態(tài)下編寫(xiě)。 

    初始狀態(tài)如何?

    自傳統邏輯集成電路(例如74LSXX TTL40XX CMOS芯片)問(wèn)世以來(lái),設置初始狀態(tài)一直是一個(gè)棘手的挑戰。那時(shí),您依靠 觸發(fā)器的預設” 清除輸入,這些輸入與某些上電復位信號相關(guān)聯(lián),因此在上電時(shí)始終會(huì )設置所需的初始狀態(tài)。

    現在,對于FPGA,是否應在系統中使用復位輸入信號來(lái)充當此類(lèi)上電復位信號一直存在爭議。帶有重置輸入的我們的Verilog示例如下所示: 

    module MyFSM(

            input clk,

            input reset,

            input x,

            output y);

        reg [1:0] state;

        assign y = state[1]&state[0]&x;

        always @ (negedge clk)

            if (reset)

                state <= 2’b00; // ...or the initial state you want.

            else case (state)

                2'b00: state <= x?2'b01:2'b00;

                2'b01: state <= x?2'b10:2'b00;

                2'b10: state <= x?2'b11:2'b00;

                2'b11: state <= 2'b00;

            endcase

    endmodule 

    之所以引起爭議,是因為以下事實(shí):大多數(但不是全部)FPGA將其配置存儲器實(shí)現為易失性的靜態(tài)RAM(更好地稱(chēng)為SRAM),并且使用外部非易失性存儲設備以強大的功率將配置復制到FPGA-在啟動(dòng)過(guò)程中。此啟動(dòng)過(guò)程通常使Verilog初始 塊可合成!

    這意味著(zhù),當您具有某種語(yǔ)言的初始化方法時(shí),可能不需要復位輸入信號即可初始化變量。使用原始的Verilog示例,只需要一行代碼: 

    initial state <= 2’b00; //

    ...或您想要的初始狀態(tài)。

    但是,并非所有的FPGA都將其內部配置存儲器實(shí)現為SRAM。一些FPGA(如Lattice MachXO2系列)具有內部非易失性配置存儲器,因此無(wú)需啟動(dòng)任何東西,從而使初始 塊不可用于合成,僅對初始化測試平臺模塊有效。

     通常,初始塊無(wú)法合成的主要原因是Verilog用于許多目標技術(shù),包括ASIC(沒(méi)有啟動(dòng)序列)。無(wú)論如何,您應該始終考慮遵循FPGA制造商的建議。是否使用復位輸入,或者如果您決定偏離,至少找到一個(gè)很好的理由。 

    軟處理器中的FSM

    您可能知道,所有CPU的控制邏輯在某處都有一個(gè)狀態(tài)機。狀態(tài)可能具有描述性名稱(chēng),例如獲取,解碼,執行回寫(xiě),或者可以簡(jiǎn)單地將其視為執行周期,例如周期1,周期2等。關(guān)鍵是,CPU內核是VerilogFSM令人驚訝的易于實(shí)現的應用程序。

    如果您希望使用本文中介紹的技術(shù)在Verilog中實(shí)現軟處理器的實(shí)現。

    首先,用Verilog編寫(xiě)FSM似乎令人生畏,但是如果讓綜合工具通過(guò)將代碼作為案例語(yǔ)句輸入來(lái)幫助您,則可以輕松啟動(dòng)并運行應用程序。

    請輸入搜索關(guān)鍵字

    確定
    色鲁99热99re超碰精品_91精品一区二区三区无码吞精_亚洲国产欧洲综合997久久_一级a性色生活片久久无
  • <noframes id="6fok0"><bdo id="6fok0"><listing id="6fok0"></listing></bdo>
    <ruby id="6fok0"></ruby>

    <progress id="6fok0"></progress>
  • <progress id="6fok0"></progress>
    <ruby id="6fok0"><table id="6fok0"></table></ruby>
  • <progress id="6fok0"><u id="6fok0"><form id="6fok0"></form></u></progress>