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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > System C特點(diǎn)及FPGA設(shè)計(jì)

          System C特點(diǎn)及FPGA設(shè)計(jì)

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

            
          2.過(guò)程
            
          模塊中的處理過(guò)程(process)類(lèi)似于C語(yǔ)言中的子程序,與C語(yǔ)言中的子程序不同的的是它具有HDL語(yǔ)言中的觸發(fā)功能。處理過(guò)程(process)的具體工作部分被保存為.cpp文件。處理過(guò)程的調(diào)用類(lèi)似于在C語(yǔ)言中子程序的調(diào)用。根據(jù)不同的要求,C中有三種處理過(guò)程。
            ● Methods : SC_METHOD()
          ● Threads : SC_THREAD()
          ● Clock Threads : SC_CTHREAD() SC_METHOD是用來(lái)描述組合邏輯,它由輸入信號(hào)的變化觸發(fā),但不能在兩次調(diào)用中保存控制狀態(tài)。并且在SC_METHOD中不能包含無(wú)限循環(huán)。由于組合邏輯有可能導(dǎo)致毛刺的產(chǎn)生,從而影響系統(tǒng)性能,所以SC_METHOD不易太復(fù)雜。

          下面是一個(gè)簡(jiǎn)單的SC_METHOD例子:


          SC_MODULE(example) {
          sc_in din;
          sc_out dout;//端口
          void inverter();//處理過(guò)程聲明
          SC_CTOR(example) {
          SC_METHOD(inverter);
          sensitive(din);//處理過(guò)程由輸入變化觸發(fā)
          }
          };
            
          處理過(guò)程inverter如下:
          void example::inverter() {
          bool internal;
          internal = din;//輸入數(shù)據(jù)取反后由輸出端口輸出
          dout = ~internal;
          }
            
          SC_THREAD是最常用的處理過(guò)程,基本上可以用在任何地方。它是由輸入信號(hào)的變化觸發(fā),但與SC_METHOD不同的是它可以在兩次調(diào)用這保存控制狀態(tài)。它的功能類(lèi)似于積存器的功能。SC_THREAD中可以包含有wait()函數(shù),這使得處理過(guò)程可以被掛起。

          SC_CTHREAD是SC_THREAD的一種特殊情況。SC_CTHREAD能產(chǎn)生更好的綜合效果。SC_CTHREAD中可以使用wait()函數(shù)。在不同的狀態(tài)間加入wait()函數(shù),人員可以用SC_CTHREAD來(lái)實(shí)現(xiàn)狀態(tài)機(jī)。這種風(fēng)格是簡(jiǎn)便的而且容易理解。SC_CTHREAD只能由時(shí)鐘信號(hào)沿觸發(fā),而SC_THREAD可以由其它非時(shí)鐘信號(hào)觸發(fā)。如果在時(shí)鐘上跳邊觸發(fā),可以使用pos()函數(shù),反之用neg()。

          為進(jìn)一步說(shuō)明SC_CTHREAD,下面給出了一個(gè)SC_CTHREAD的例子。

          SC_MODULE(example) {
          sc_in_clk clock;//輸入時(shí)鐘
          sc_in trigger, din;
          sc_out dout;
          void invert();
          SC_CTOR(example) {
          SC_CTHREAD(toggler, clock.pos());//時(shí)鐘上升沿觸發(fā)
          }
          }
          void example::invert() {
          bool last = false;
          for (;;) {
          wait_until(trigger.delayed() == true);//等到下個(gè)時(shí)鐘上升沿 //且trigger=1再執(zhí)行
          last = din; dout = last; wait();
          last =~din; dout = last;wait();//下個(gè)上升沿才更改數(shù)據(jù)
          }
          }
            
          3.端口與信號(hào)
            
          與HDL語(yǔ)言相似,使用 C庫(kù)就可以在C程序中加入端口和信號(hào)。這些原先C語(yǔ)言中沒(méi)有的功能,使更復(fù)合硬件設(shè)計(jì)的要求。
          模塊與模塊之間是通過(guò)端口信號(hào)加一聯(lián)系。只要兩個(gè)端口被連接在一起,信號(hào)就可以在它們之間進(jìn)行傳遞。對(duì)于這一點(diǎn)習(xí)慣用HDL進(jìn)行設(shè)計(jì)的設(shè)計(jì)人員是很容易理解和接受的,因?yàn)檫@和HDL中端口的功能是一樣的。 信號(hào)只是在一個(gè)模塊的內(nèi)部使用,這也是和HDL中信號(hào)的用法是一致的。 下面給出端口和信號(hào)聲明的例子。

          sc_in“類(lèi)型”> din// 輸入端口din
          sc_out“類(lèi)型”> dout// 輸出端口dout
          sc_inout“類(lèi)型”> q// 輸入輸出端口q
          sc_signal i[16]; //創(chuàng)建一個(gè)具有16比特的邏輯型信號(hào)i
            
          4.?dāng)?shù)據(jù)類(lèi)型
            
          考慮到硬件設(shè)計(jì)的要求, C中也加入了一些硬件設(shè)計(jì)中常用的數(shù)據(jù)類(lèi)型。具體如下:

          sc_int 有符號(hào)整數(shù)類(lèi)型,最大有64個(gè)比特位。
          sc_uint 無(wú)符號(hào)整數(shù)類(lèi)型,最大有64個(gè)比特位。
          sc_bigint 有符號(hào)整數(shù)類(lèi)型,任意比特位,其最大比特位定義在
          sc_constants.h中。
          sc_biguint 無(wú)符號(hào)整數(shù)類(lèi)型,任意比特位,其最大比特位定義在
          sc_constants.h中。
          sc_bit 二值數(shù)據(jù),單比特位。
          sc_logic 四值數(shù)據(jù),單比特位。
          sc_bv 二值數(shù)據(jù),任意比特位。
          sc_lv 四值數(shù)據(jù),任意比特位。
          sc_fixed 參數(shù)固定的有符號(hào)定點(diǎn)數(shù)。
          sc_ufixed 參數(shù)固定的無(wú)符號(hào)定點(diǎn)數(shù)。
          sc_fix 參數(shù)不固定的有符號(hào)定點(diǎn)數(shù)。
          sc_ufix 參數(shù)不固定的無(wú)符號(hào)定點(diǎn)數(shù)。
          User defined structs 用戶(hù)自定義結(jié)構(gòu)
            
          以上是一些System C的基本概念。
            
          五、結(jié)論
            

          System C是一種很有效的設(shè)計(jì)方法,它不僅可以幫助設(shè)計(jì)人員完成一個(gè)復(fù)雜的系統(tǒng)設(shè)計(jì),還可以避免傳統(tǒng)設(shè)計(jì)中的各種弊端,并提高設(shè)計(jì)人員的工作效率。它的這些優(yōu)點(diǎn)使System C在復(fù)雜的系統(tǒng)設(shè)計(jì)中大有作為。并且習(xí)慣用HDL的設(shè)計(jì)人員,可以很容易地轉(zhuǎn)到用System C設(shè)計(jì)。

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

          上一頁(yè) 1 2 3 下一頁(yè)

          評(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); })();