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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Verilog HDL基礎(chǔ)之:與C語(yǔ)言的區(qū)別與聯(lián)系(獨(dú)家)

          Verilog HDL基礎(chǔ)之:與C語(yǔ)言的區(qū)別與聯(lián)系(獨(dú)家)

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

          數(shù)字電路設(shè)計(jì)工程師一般都學(xué)習(xí)過(guò)編程語(yǔ)言、數(shù)字邏輯基礎(chǔ)、各種EDA軟件工具的使用。就編程語(yǔ)言而言,國(guó)內(nèi)外大多數(shù)學(xué)校都以為標(biāo)準(zhǔn),只有少部分學(xué)校使用Pascal 和Fortran。

          本文引用地址:http://www.ex-cimer.com/article/201706/348844.htm

          算法的描述和驗(yàn)證常用來(lái)做。例如要設(shè)計(jì)Reed-Solomen編碼/解碼器,可以分為下面幾個(gè)步驟。

          1. 先深入了解Reed-Solomen編碼/解碼的算法。
          2. 編寫(xiě)的程序來(lái)驗(yàn)證算法的正確性。
          3. 運(yùn)行描述編碼器的C語(yǔ)言程序,把在數(shù)據(jù)文件中的多組待編碼的數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的編碼后數(shù)據(jù),并存入文件。
          4. 編寫(xiě)一個(gè)加干擾用的C語(yǔ)言程序,用于模擬信道。它能產(chǎn)生隨機(jī)誤碼位(并把誤碼位個(gè)數(shù)控制在糾錯(cuò)能力范圍內(nèi)),將其加入編碼后的數(shù)據(jù)文件中。運(yùn)行該加干擾程序,產(chǎn)生帶誤碼位的編碼后的數(shù)據(jù)文件。
          5. 編寫(xiě)一個(gè)解碼器的C語(yǔ)言程序,運(yùn)行該程序把帶誤碼位的編碼文件解碼為另一個(gè)數(shù)據(jù)文件。

          比較原始數(shù)據(jù)文件和生成的文件,便可知道編碼和解碼的程序是否正確(能否自動(dòng)糾正糾錯(cuò)能力范圍內(nèi)的錯(cuò)碼位),用這種方法我們就可以來(lái)驗(yàn)證算法的正確性。但這樣的數(shù)據(jù)處理其運(yùn)行速度只與程序的大小和計(jì)算機(jī)的運(yùn)行速度有關(guān),也不能獨(dú)立于計(jì)算機(jī)而存在。

          如果要設(shè)計(jì)一個(gè)專(zhuān)門(mén)的電路來(lái)進(jìn)行這種對(duì)速度有要求的實(shí)時(shí)數(shù)據(jù)處理,除了以上介紹的C程序外,還需編寫(xiě)硬件描述語(yǔ)言(如Verilog HDL或 VHDL)的程序。然后進(jìn)行仿真以便從電路結(jié)構(gòu)上保證算法能在規(guī)定的時(shí)間內(nèi)完成,并能與前端和后端的設(shè)備或器件正確無(wú)誤地交換數(shù)據(jù)。

          用硬件描述語(yǔ)言(HDL)的程序設(shè)計(jì)硬件的好處在于易于理解、易于維護(hù),調(diào)試電路速度快,有許多的易于掌握的仿真、綜合和布局布線工具,還可以用C語(yǔ)言配合HDL來(lái)做邏輯設(shè)計(jì)的前后仿真,驗(yàn)證功能是否正確。

          在算法硬件電路的研制過(guò)程中,計(jì)算電路的結(jié)構(gòu)和芯片的工藝對(duì)運(yùn)行速度有很大的影響。所以在電路結(jié)構(gòu)確定之前,必須經(jīng)過(guò)多次仿真。

          • C語(yǔ)言的功能仿真。
          • C語(yǔ)言的并行結(jié)構(gòu)仿真。
          • Verilog HDL的行為仿真。
          • Verilog HDL RTL級(jí)仿真。
          • 綜合后門(mén)級(jí)結(jié)構(gòu)仿真。
          • 布局布線后仿真。
          • 電路實(shí)現(xiàn)驗(yàn)證。

          下面介紹用C語(yǔ)言配合Verilog HDL來(lái)設(shè)計(jì)算法的硬件電路塊時(shí)考慮的三個(gè)主要問(wèn)題:

          1.為什么選擇C語(yǔ)言與Verilog 配合使用

          首先,C語(yǔ)言很靈活,查錯(cuò)功能強(qiáng),還可以通過(guò)PLI(編程語(yǔ)言接口)編寫(xiě)自己的系統(tǒng)任務(wù)直接與硬件仿真器(如Verilog-XL)結(jié)合使用。C語(yǔ)言是目前世界上應(yīng)用最為廣泛的一種編程語(yǔ)言,因而C程序的設(shè)計(jì)環(huán)境比Verilog HDL更完整。此外,C語(yǔ)言可應(yīng)用于許多領(lǐng)域,有可靠的編譯環(huán)境,語(yǔ)法完備,缺陷較少。

          比較起來(lái),Verilog 語(yǔ)言只是針對(duì)硬件描述的,在別處使用(如用于算法表達(dá)等)并不方便。而且Verilog的仿真、綜合、查錯(cuò)工具等大部分軟件都是商業(yè)軟件,與C語(yǔ)言相比缺乏長(zhǎng)期大量的使用,可靠性較差,亦有很多缺陷。所以,只有在C語(yǔ)言的配合使用下,Verilog才能更好地發(fā)揮作用。

          面對(duì)上述問(wèn)題,最好的方法是C語(yǔ)言與Verilog語(yǔ)言相輔相成,互相配合使用。這就是既要利用C語(yǔ)言的完整性,又要結(jié)合Verilog對(duì)硬件描述的精確性,來(lái)更快、更好地設(shè)計(jì)出符合性能要求的硬件電路系統(tǒng)。

          利用C語(yǔ)言完善的查錯(cuò)和編譯環(huán)境,設(shè)計(jì)者可以先設(shè)計(jì)出一個(gè)功能正確的設(shè)計(jì)單元,以此作為設(shè)計(jì)比較的標(biāo)準(zhǔn)。然后,把C程序一段一段地改寫(xiě)成用并型結(jié)構(gòu)(類(lèi)似于Verilog)描述的C程序,此時(shí)還是在C的環(huán)境里,使用的依然是C語(yǔ)言。

          如果運(yùn)行結(jié)果都正確,就將C語(yǔ)言關(guān)鍵字用Verilog相應(yīng)的關(guān)鍵字替換,進(jìn)入Verilog的環(huán)境。將測(cè)試輸入同時(shí)加到C與Verilog兩個(gè)單元,將其輸出做比較。這樣很容易發(fā)現(xiàn)問(wèn)題的所在,更正后再做測(cè)試,直至正確無(wú)誤。

          2.C語(yǔ)言與Verilog語(yǔ)言互相轉(zhuǎn)換中存在的問(wèn)題

          混合語(yǔ)言設(shè)計(jì)流程往往會(huì)在兩種語(yǔ)言的轉(zhuǎn)換中會(huì)遇到許多難題,如下所示。

          • 怎樣把C程序轉(zhuǎn)換成類(lèi)似Verilog結(jié)構(gòu)的C程序。
          • 如何增加并行度,以保證用硬件實(shí)現(xiàn)時(shí)運(yùn)行速度達(dá)到設(shè)計(jì)要求。
          • 怎樣不使用C中較抽象的語(yǔ)法(例如迭代、指針、不確定次數(shù)的循環(huán)等)。也能來(lái)表示算法(因?yàn)檗D(zhuǎn)換的目的是用可綜合的Verilog語(yǔ)句來(lái)代替C程序中的語(yǔ)句,而可用于綜合的Verilog語(yǔ)法是相當(dāng)有限的,往往找不到相應(yīng)的關(guān)鍵字來(lái)替換)。

          C程序是按行依次執(zhí)行的,屬于順序結(jié)構(gòu)。而Verilog描述的硬件是可以在同一時(shí)間同時(shí)運(yùn)行的,屬于并行結(jié)構(gòu)。這兩者之間有很大的沖突。另外,Verilog的仿真軟件也是順序執(zhí)行的,在時(shí)間關(guān)系上同實(shí)際的硬件是有差異的,可能會(huì)出現(xiàn)一些無(wú)法發(fā)現(xiàn)的問(wèn)題。

          C語(yǔ)言的函數(shù)調(diào)用與Verilog中模塊的調(diào)用也有區(qū)別。C程序調(diào)用函數(shù)是沒(méi)有延時(shí)特性的,一個(gè)函數(shù)是惟一確定的,對(duì)同一個(gè)函數(shù)的不同調(diào)用是一樣的。而Verilog中對(duì)模塊的不同調(diào)用是不同的,即使調(diào)用的是同一個(gè)模塊,必須用不同的名字來(lái)指定。

          Verilog的語(yǔ)法規(guī)則很死,限制很多,能用的判斷語(yǔ)句有限,仿真速度較慢,查錯(cuò)功能差,錯(cuò)誤信息不完整。仿真軟件通常也很昂貴,而且不一定可靠。C語(yǔ)言的花樣則很多,轉(zhuǎn)換過(guò)程中會(huì)遇到一些困難。

          C語(yǔ)言沒(méi)有時(shí)間關(guān)系,轉(zhuǎn)換后的Verilog程序必須要能做到?jīng)]有任何外加的人工延時(shí)信號(hào),否則將無(wú)法使用綜合工具把Verilog源代碼轉(zhuǎn)化為門(mén)級(jí)邏輯。

          3.如何利用C語(yǔ)言來(lái)加快硬件的設(shè)計(jì)和查錯(cuò)

          如表1所示為常用的C語(yǔ)言與Verilog相對(duì)應(yīng)的關(guān)鍵字與控制結(jié)構(gòu)。

          表1 C語(yǔ)言與Verilog相對(duì)應(yīng)的關(guān)鍵字與控制結(jié)構(gòu)表

          C

          Verilog

          sub-function

          module、function、task

          if-then-else

          if-then-else

          case

          case

          {,}

          begin、end

          for

          for

          while

          while

          break

          disable

          define

          define

          int

          int

          printf

          monitor、display、strobe

          如表2所示為C語(yǔ)言與Verilog相對(duì)應(yīng)的運(yùn)算符。

          表2 C語(yǔ)言與Verilog對(duì)應(yīng)運(yùn)算符表

          C

          Verilog

          功 能

          *

          *

          /

          /

          +

          +

          -

          -

          %

          %

          取模

          !

          !

          反邏輯

          邏輯與

          ||

          ||

          邏輯或

          >

          >

          大于

          小于

          續(xù)表

          C

          Verilog

          功 能

          >=

          >=

          大于等于

          =

          =

          小于等于

          ==

          ==

          等于

          !=

          !=

          不等于

          位反相

          按位邏輯與

          |

          |

          按位邏輯或

          ^

          ^

          按位邏輯異或

          ~^

          ~^

          按位邏輯同或

          >>

          >>

          右移

          左移

          ?:

          ?:

          相當(dāng)于if-else

          從上面的講解我們可以總結(jié)如下。

          • C語(yǔ)言與Verilog硬件描述語(yǔ)言可以配合使用,輔助設(shè)計(jì)硬件。
          • C語(yǔ)言與Verilog硬件描述語(yǔ)言很像,但要稍加限制。
          • C語(yǔ)言的程序很容易轉(zhuǎn)成Verilog的程序。


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();