<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 概述 ` `FPGA就好像一個平臺,用簡單的器件和復雜的邏輯構建起來的。這個平臺大概由六部分組成,分別為基本可編程邏輯模塊(CLB)、可編程輸入/輸出模塊(IOB)、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內嵌專用硬核等。對于不同型號的芯片,其內部結構也會有些變化,但原理都也差不多,所以咱不必在意說的是何種芯片,下面就以鄙陋只見說芯片之精妙。 ![](https://img.kancloud.cn/ec/e3/ece35a0d2e7733e2c68414223fa157b8_481x491.png) 1、可編程邏輯模塊 ? ?? ???邏輯塊(Logic Block),Altera稱之為邏輯陣列塊(LAB),Xilinx稱之為可配置邏輯課(CLB),我更喜歡CLB這個稱呼,因為它說得夠清楚,雖然我用的是Altera公司的芯片吧(\*^\_\_^\*) 。我們所說的Verilog編程,可以說就是對CLB的配置,它可以實現絕大多數的邏輯功能。 這是從書上拍下了的,這是CLB基礎的邏輯單元(LC)Logic Cell,一個CLB包含4個LC。每個LC中包括4輸入LUT、進位及控制邏輯和D觸發器各一個。而每2個LC放在一個微片上,上圖就是倆個微片。微片就是很小很小的一個模塊,或可理解為像人體細胞一樣吧。 ? ?? ? 其中LUT(Look-Up Table)即查找表,它的本質是一個16X1的SRAM,SRAM是英文Static RAM的縮寫,即靜態隨機存儲器。我們可以認為SRAM是這個東西。 ![](https://img.kancloud.cn/cf/37/cf37b20ef12e2c50b1a97d072bd2b8d3_356x224.png) 現在我想每個格子都放一樣東西,并方便尋找給每個格子編號,則格子的編號就可以看做格子的地址,如果每個格子只能放一個蘋果或是橘子,那么上圖就可以理解為一個20X1的RAM,當然,這只是一種比喻。 ? ?? ? 我們通過Verilog語言可以寫出邏輯電路,例如F=A&B&C&D,FPGA開發軟件會自動計算邏輯電路的所有可能,并把結果放入SRAM,這一過程就是所謂的編程。就那F=A&B&C&D來說,ABCD的組合共有十六組,如下表 ![](https://img.kancloud.cn/a1/97/a197787047e8c21d1d162c6ef4645977_132x568.png) ` `當我們下載的時候,軟件會自動把上述表格的值送給SRAM,我們ABCD取不同值時,TLU就根據地址進行找到數輸出。也就是說,FPGA并不知道我們進行了F=A&B&C&D這一計算,它只是根據我們的輸入進行尋址。把TLU與數據選擇器配合使用,就可以實現組合邏輯功能,當與觸發器結合就可以實現時序邏輯電路的基本功能。 ![](https://img.kancloud.cn/6c/1c/6c1c61741b0aae67b89e9d74faff739f_628x498.png) ![](https://img.kancloud.cn/fd/2f/fd2fe74d074e68fa0e5c945caa75b008_289x199.png) ` `由M來控制AB哪個與D搭上線,就是M來選擇AB輸出哪一個,例如當M=0時A的值輸出,當M=1時B的值輸出, ![](https://img.kancloud.cn/29/40/29403b20bbb35a98ade84c539b941997_383x648.png) 實現時序邏輯就是因為這個,D數據輸入,FFY時鐘信號輸入,它來一拍,數據傳輸一個。EC時鐘使能,Sd觸發器控制,Rd復位控制。 ? ?? ?? ?下面就通過舉例來說一下各種功能 (1)實現4變量的任意邏輯函數。 ? ?? ?? ?例如要實現F=A^B&C||D。那么就如上表格方式計算出所有的可能,將ABCD依次送給F1~F4,O端得到4變量邏輯函數的結果。該結果可以經過XMUX直接從X輸出,也可以經DCMUX和D觸發器由XQ輸出。 (2)實現5變量的任意邏輯函數 ? ?? ?? ?5變量?!那一個LUT肯定是不夠了。F=A^B&C||D&E腫么辦???這時BX成了救世主,我們把ABCD這四個數據時同時送到送入F1~F4以及G1~G4的同時,將第五個數E送給BX。Why?Σ( ° △ °|||)︴因為五個數有32種可能,一個LUT只能存儲16種,這樣倆個就存儲32種啦。而且,如果我們在G-LUT中放的是ABCD任意值,而E為1,在F-LUT中放的也是ABCD任意值,但E=0。這時候第五個變量的輸入就起到選擇這倆個LUT哪個輸出!!! (3)實現6變量任意邏輯函數 ? ?? ?? ?有了5變量的基礎,實現六變量就好理解了,六變量邏輯函數需要倆個微片。因為由2^6=64嘛。我們假設要實現W=A^B&C||D&E&F。則可以讓微片一號的G-LUT存放地址ABCD任意值E=0,F=1,F-LUT存放ABCD任意值E=1,F=1。E從BX輸入。微片二號G-LUT存放地址ABCD任意值E=0,F=0,F-LUT存放ABCD任意值E=1,F=0。E從BX輸入,F從BY輸入。微片一號從F5輸出值接到微片二號的F5IN即可完成。結果可經過YMUX從Y輸出,可再經DYBMUX由觸發器輸出。 ![](https://img.kancloud.cn/ce/13/ce13cacde083caf53b0740a87bec5be2_475x409.png) ` `一個微片可以實現2位二進制的加法運算就是11+11=110,10+01=11這些,加法器是非常重要的器件,日后詳談。在FPGA內部中,實現加法時,加數A0A1和被加數B0B1分別送入G2F2和G1F1,即G2=A1,G1=B1,F2=A0,F1=B0。實現F2⊕F1和G2⊕G1,由于加法涉及到了進位問題,故CLB專門設計了一個叫做進位鏈的東西以便實現進位操作。同時,通過編程使XMUX和YMUX選通異或門的輸出。電路上下倆個是全加器。圖中,與門、XCMUX、YCMUX、C-1MUX和CY構成進位邏輯電路。也稱進位鏈,可以與其他微片串聯實現更多的加法運算。當此微片為最低位時,通過編程使C-1MUX選通BX,且使BX=0。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看