<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 如何讓數字硬件設計簡(jiǎn)單化

如何讓數字硬件設計簡(jiǎn)單化

作者: 時(shí)間:2018-07-27 來(lái)源:網(wǎng)絡(luò ) 收藏

VHDL和Verilog是用于描述可綜合數字硬件的兩種主流語(yǔ)言。但我們不應忘記,它們最初可不是為了這個(gè)目的創(chuàng )建的,而是為了模擬和歸檔。這個(gè)事實(shí)加之許多其它語(yǔ)法弱點(diǎn),引發(fā)了許多問(wèn)題,比如設計參數化能力弱;設計可重用性差;代碼冗長(cháng)、方法繁復;以及使可綜合和不可綜合特征之間的邊界模糊不清。為了應對這些限制和問(wèn)題,一些新的替代解決方案已經(jīng)出現,如Bluespec、Chisel、CλaSH、Migen、MyHDL和SpinalHDL等。

本文引用地址:http://dyxdggzs.com/article/201807/384189.htm

以不同方式描述硬件

與VHDL和Verilog一樣,SpinalHDL可用于通過(guò)定義寄存器和門(mén)來(lái)描述硬件,SpinalHDL不使用眾所周知的事件驅動(dòng)范式來(lái)描述硬件(如VHDL和Verilog),而是使用專(zhuān)為此目的設計的語(yǔ)法。這允許在其聲明中區分組合信號與寄存器,并通過(guò)定義規則來(lái)描述硬件行為。這意味著(zhù)信號和寄存器可以在相同的條件語(yǔ)句中分配,而這對于“事件驅動(dòng)”替代方案是不可能的(見(jiàn)圖1)。

圖1:簡(jiǎn)單的硬件描述。

語(yǔ)言的所有語(yǔ)法都可用于硬件描述,語(yǔ)法可分為兩類(lèi)。一類(lèi)是:通過(guò)使用專(zhuān)用類(lèi)型顯式(explicitly)定義可綜合硬件;另一類(lèi)是:可用于闡述硬件結構,例如實(shí)例循環(huán)、功能和類(lèi)。除此之外,SpinalHDL編譯器將執行許多檢查,以確保用戶(hù)設計是合法的,例如:是否缺少組合循環(huán);所有組合分配的完整性、以避免不必要的閂鎖指推(inferring unwanted latche);跨時(shí)鐘域連接的合法性等——這使得SpinalHDL用起來(lái)很安全。

但SpinalHDL與VHDL和Verilog的主要不同是其嵌入到通用語(yǔ)言(Scala)中這一事實(shí)。由于這種方法,我們得到一個(gè)“Meta HDL”,其中高層級部分(類(lèi)、動(dòng)態(tài)陣列、字典...)可用于通過(guò)算法手段生成可綜合的硬件描述。這提供了非常高的表現力來(lái)描述靈活和可重復使用的硬件。實(shí)際上,正是它使SpinalHDL有能力以面向對象和功能性編程的方式來(lái)操縱所描述設計的每一個(gè)元素;它與一個(gè)有能力的標準庫結合起來(lái),從而在元硬件描述和闡述能力方面獲得了出乎意料的能力,遠超VHDL、Verilog和SystemVerilog所能(見(jiàn)圖2)。

圖2:使用抽象實(shí)現寄存器庫(register bank)。

SpinalHDL編譯器能夠將用戶(hù)編寫(xiě)的硬件描述轉換為人類(lèi)可讀和可綜合的VHDL/Verilog網(wǎng)表(正如大多數原理圖輸入工具貫穿所用),這使得它已經(jīng)與行業(yè)中使用的大多數EDA工具兼容。

此外,目標語(yǔ)言/EDA工具不須本地支持Spinal-HDL提供的所有高級功能(例如類(lèi)型和數據結構參數化),在被解壓縮/展開(kāi)到生成的VHDL/Verilog網(wǎng)表前,在SpinalHDL編譯器內部得以支持、解決(見(jiàn)圖3)。

圖3:仲裁管道的實(shí)現。

未來(lái)展望

作為這些概念的現實(shí)演示者,我們使用SpinalHDL實(shí)現了一款名為“Pinsec”的小型SoC,它集成了RISC-V CPU、SDRAM、RAM、GPIO、定時(shí)器、UART、VGA和JTAG調試接口,由AXI4和APB3互連全部連接在一起(見(jiàn)圖4)。

圖4:Pinsec SoC框圖。

該演示表明,可非常容易地實(shí)現設計的頂層,特別是在涉及總線(xiàn)互連的參數化和實(shí)例化時(shí)。 與傳統方法不同,SpinalHDL只需幾行代碼就能搞定,從而大大提高了可讀性和生產(chǎn)率。例如,將新外設連接到APB互連只需要一行參數化代碼(見(jiàn)圖5)。

圖5:Pinsec的總線(xiàn)橋和所有APB3總線(xiàn)構造的頂層實(shí)例化。

另一個(gè)有趣的演示是RISC-V CPU(名為VexRiscv)的第二次迭代,演示了使用SpinalHDL的先進(jìn)元硬件描述功能帶來(lái)的增益。首先,CPU頂層是一個(gè)空白骨架,它只提供一些闡述服務(wù)、作為信號通過(guò)各階段(stage)的自動(dòng)流水線(xiàn)、以及各階段的仲裁接口。

與一個(gè)允許在CPU頂層注入硬件的插件注冊系統相結合,該方法支持——可以具有相同功能的多個(gè)變體、而無(wú)需將其集成到CPU代碼中的——非常靈活的CPU架構。插件可從最簡(jiǎn)單的事情(例如程序計數器或整數ALU)到最復雜的操作(例如通過(guò)L1緩存的加載和存儲支持)。

插件之間的合作也可能非常復雜。例如,所有插件都可以發(fā)布新的指令操作碼,以及如何由指令進(jìn)行解碼。

然后,指令將使用與SpinalHDL元硬件功能相結合的Quine-Mc Cluskey算法來(lái)生成最小指令解碼邏輯。

結論

使用SpinalHDL是改變數字硬件設計愿景并實(shí)現真正工程化的一種體驗。憑借其所有功能,它允許芯片設計人員描述優(yōu)雅和可重復使用的硬件,而沒(méi)有通常使用的HDL(如VHDL、Verilog甚至System-Verilog)的繁瑣和限制。它也證明了使用軟件工程技術(shù)在生成的RTL中沒(méi)有任何開(kāi)銷(xiāo)就可詳細描述硬件結構的可行性和收益。該語(yǔ)言及其參考編譯器也是完全免費和開(kāi)源的。

最后,請注意:上述示例中使用的所有功用和類(lèi),如Stream、RGB、隊列、Apb3Decoder、AxiLite4和AxiLite4SlaveFactory都不是Spinal-HDL語(yǔ)言中提供的功能,而是由標準庫使用其常規語(yǔ)法提供。換句話(huà)說(shuō),可以通過(guò)實(shí)現新的庫、抽象層和可從根本上改善硬件描述表現力的工具來(lái)擴展語(yǔ)言本身;也可在不忽視抽象硬件的條件下、通過(guò)引入新的概念來(lái)擴展語(yǔ)言(因為這些庫仍然在RTL域內實(shí)現)。



關(guān)鍵詞: 控制器 嵌入式 解碼器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>