<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          使用Verilog來(lái)編程FPGA

          作者: 時(shí)間:2023-12-21 來(lái)源:電子森林 收藏

          是依賴數(shù)字邏輯的數(shù)字器件,計(jì)算機(jī)硬件使用的是數(shù)字邏輯,每一個(gè)計(jì)算,屏幕上每一個(gè)像素的呈現(xiàn),音樂(lè)軌的每一個(gè)note都是使用數(shù)字邏輯構(gòu)成的功能塊來(lái)實(shí)現(xiàn)的。 雖然多數(shù)時(shí)候,數(shù)字邏輯是抽象的數(shù)學(xué)概念,而不是物理電子,邏輯門以及其它的數(shù)字邏輯器件則是由刻蝕在集成電路上的晶體管來(lái)實(shí)現(xiàn)的。對(duì)于來(lái)講,可以通過(guò)繪制邏輯門構(gòu)成的電路,將這些門映射到的通用門上,并將它們連接起來(lái)以實(shí)現(xiàn)你設(shè)想的邏輯設(shè)計(jì)。 另外一種方式是,使用(或其它的)硬件描述語(yǔ)言來(lái)實(shí)現(xiàn)邏輯。 你依然可以購(gòu)買能夠?qū)崿F(xiàn)小數(shù)量邏輯門的器件,比如7400,內(nèi)部只有4個(gè)二輸入與非門,然而這些器件只是為了維護(hù)一些古老的系統(tǒng)或用于教學(xué)。

          邏輯門

          邏輯門有輸入和輸出,這些數(shù)字輸入和輸出可以是“高”或者“低”, 無(wú)論是輸入端還是輸出端,所謂的“低”指的是接近于0V(地)的電壓,而“高”一般是超過(guò)提供給該邏輯器件的供電電壓一半以上的電壓,給FPGA提供的電壓一般為1.8V、3.3V或著5V中的一個(gè),多數(shù)的FPGA的工作電壓范圍有一定的冗余度,有些FPGA允許在一個(gè)器件中存在多個(gè)邏輯電壓.

          本文引用地址:http://www.ex-cimer.com/article/202312/454119.htm
          1. 數(shù)字門介紹
          • 非門 - NOT Gate
          • 與門 - AND Gate
          • 或門 - OR Gate
          • 與非門 - NAND Gate
          • 或非門 - NOR Gate

          與非門和或非門都是非常通用的門,因?yàn)橹恍枰聪嗨鼈兊妮斎攵嘶蜉敵龆司涂梢詷?gòu)成其它任何一種門,另外你可以用與非門或著或非門構(gòu)成非門,只需要將兩個(gè)輸入信號(hào)連接在一起就可以。例如圖1.6中你可以用3個(gè)或非門構(gòu)成一個(gè)與門。

          3norgate2nand.png

          圖1.6 用3個(gè)“或非門”構(gòu)成一個(gè)“與門”

          De Morgan定律

          圖1.6的設(shè)計(jì)利用了邏輯定律中的De Morgan定律 - 將兩個(gè)輸入端“與”后的結(jié)果進(jìn)行取反,和先將兩個(gè)輸入端進(jìn)行取反以后再“或”得到的結(jié)果是一樣的。在圖1.6中,兩個(gè)輸入端信號(hào)先被由“或非門”構(gòu)成的“非門”取反以后進(jìn)行“或”操作,再對(duì)輸出的結(jié)果取反。

          usenortomakeandtruetable.png

          表1.6 用多個(gè)異或門構(gòu)成一個(gè)與門的真值表

          • 異或門 - XOR Gate

          二進(jìn)制

          我們前面將邏輯門的輸入和輸出端以電壓的高低來(lái)表示,我們還可以將它們用數(shù)字來(lái)表示 - 1表示高電平,0表示低電平,這樣我們就可以想明白計(jì)算機(jī)是如何使用邏輯門來(lái)操作數(shù)字的了。當(dāng)然,我們僅有數(shù)值0和1是不夠用的。 在我們的生活中都是使用10進(jìn)制,主要的原因是因?yàn)槲覀冇?0根手指,如果我們的老祖宗使用鼻子來(lái)計(jì)數(shù),那就是二進(jìn)制了,因?yàn)榻Y(jié)果只有0還是1,如果要表示多于1個(gè)的數(shù)字,你可以用多個(gè)二進(jìn)制數(shù)值(bit - binary digit)來(lái)表示。

          binarydecimalnumbers.png

          表1.8 用二進(jìn)制和十進(jìn)制表示的數(shù)字0到7

          用邏輯實(shí)現(xiàn)的“加法”

          你可以用邏輯門來(lái)對(duì)二進(jìn)制數(shù)進(jìn)行運(yùn)算,因?yàn)槎M(jìn)制數(shù)只是用“位”(bit)表示的數(shù)值,你可以用邏輯針對(duì)任何數(shù)值進(jìn)行運(yùn)算。圖1.8展示了如何用邏輯門進(jìn)行一個(gè)二進(jìn)制加。

          asinglebitadder.png

          圖1.8 一個(gè)1位加法器

          asinglebitaddertruetable.png

          表1.9 一個(gè)1位加法器的真值表

          從表中可以看出,如果輸入端A和B都是0,加法的結(jié)果位0, 如果其中一個(gè)輸入為1,加法的結(jié)果為1,然后如果兩個(gè)輸入端都為1,加法的位本身就變成了0,但我們希望將進(jìn)位輸出的1放到下一位,在二進(jìn)制中,1+1位0,并一個(gè)進(jìn)位(或十進(jìn)制的2) 這就意味著,如果我們同時(shí)加多于一位的數(shù)值,下一個(gè)加法的部分將有3個(gè)輸入(A、B和進(jìn)位輸入),這就需要三個(gè)位的加法,圖1.9展示了計(jì)入進(jìn)位以后的加法。

          asinglebitadderwithcarryin.png

          圖1.9 一個(gè)帶有進(jìn)位輸入端的1位加法器

          你也許永遠(yuǎn)不會(huì)用這種方式通過(guò)多個(gè)門來(lái)構(gòu)建一個(gè)加法器,因?yàn)橛鞋F(xiàn)成的加法器芯片可以用于你的設(shè)計(jì),在這里你能夠看到加法器是如何通過(guò)門電路構(gòu)成的。 如果我們有8級(jí)這樣的電路,就可以實(shí)現(xiàn)2個(gè)字節(jié)的加法操作,每一個(gè)計(jì)算機(jī)的中央處理器(CPU)都有這種用邏輯門搭建的硬件加法器,一個(gè)32位的處理器可以同時(shí)處理32位的數(shù)值,一個(gè)64位的機(jī)器能夠通過(guò)64個(gè)圖1.9的方式同時(shí)將64位數(shù)字加起來(lái)。



          關(guān)鍵詞: Verilog 編程 FPGA

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();