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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 用CPLD實現(xiàn)DSP與背板VME總線之間的連接

          用CPLD實現(xiàn)DSP與背板VME總線之間的連接

          作者: 時間:2012-02-02 來源:網(wǎng)絡(luò) 收藏

          1 引言

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

          是一種用戶可以根據(jù)自行需要而自己能夠設(shè)計構(gòu)造其邏輯功能的數(shù)字集成電路系統(tǒng),實現(xiàn)了硬件設(shè)計的軟件化。具有豐富的可編程I/O引腳,具有在系統(tǒng)可編程( In System programmability)、使用方便靈活的的特點;近年來, 器件成本不斷下降,集成密度、速度和性能大幅度提高,一個芯片就可以實現(xiàn)一個復(fù)雜的數(shù)字電路系統(tǒng);再加上使用方便的開發(fā)工具,使用CPLD器件可以極大地縮短產(chǎn)品開發(fā)周期,給設(shè)計、修改帶來很大方便。CPLD成為一種可優(yōu)化硬件電路設(shè)計且具競爭力的產(chǎn)品。

          ALTERA 公司不僅提供大規(guī)模的CPLD 和FPGA 器件, 同時也提供一套十分有特色的綜合工具MAXPLU S- II, 設(shè)計者既可以使用原理圖輸入, 也可以使用文本輸入方式, 更可以二者混合輸入。從編譯、綜合、布線到仿真、下載一氣呵成, 十分方便。

          TMS320C6713是TI公司在TMS320C6711的基礎(chǔ)上推出的新一代浮點芯片,它可以在255MHz的時鐘頻率下實現(xiàn)1800MIPS/1350MFLOPS的定點和浮點運算,極大程度上滿足了高速數(shù)據(jù)采集與實時控制系統(tǒng)對信號處理速度的要求。作為下位機使用時,它可通過主機口HPI與各種不同類型的上位機連接。

          本文將給出如何使用ALteRA 公司的CPLD 器件EPM7128AE-144實現(xiàn)的HPI口和總線之間的連接方法。

          2 TMS320C6713的HPI
          2.1 TMS320C6713HPI口的接口信號

          TMS320C6713的HPI口是一個16位寬的并行端口。上位機掌管該端口的主控權(quán),可通過HPI直接訪問TMS320C6713的存儲空間和外圍設(shè)備。表1總結(jié)了TMS320C6713HPI的接口信號的基本特征。

          下面對它們的具體工作方式進行說明。

          (1)HD[15-0]可以看作數(shù)據(jù)地址的共用總線,通過HD[15-0]傳送的數(shù)據(jù)包括控制積存器的設(shè)置值、初始化的訪問地址以及要傳輸?shù)臄?shù)據(jù)。

          (2)HCNTL[1-0]信號控制當(dāng)前訪問的是HPI的哪一個寄存器,還提供了一個對HPI數(shù)據(jù)寄存器(HPID)進行自增的訪問方式。表2給出了HCNTL[1-0]控制信號功能。

          (3)HHWIL的作用是表明區(qū)分HD[15-0]上傳輸?shù)氖?2位數(shù)據(jù)中的高16位還是低16位。

          (4)#HAS信號用于復(fù)用地址數(shù)據(jù)總線的主機。

          (5)#HCS、#HDS1和#HDS2信號在片內(nèi)組合為一個低有效的#HSTROBE信號,它的作用是:讀取時#HSTROBE信號的下降沿鎖存輸入HPI的控制信號,寫入時其下降沿和讀取時作用相同,上升沿則鎖存寫入的數(shù)據(jù)。

          (6)#HRDY信號表明HPI是否已準(zhǔn)備好傳輸數(shù)據(jù),作用是在接口時序上插入等待狀態(tài)。

          TMS320C6713HPI中用三個寄存器來完成主設(shè)備和CPU的通信,他們是HPI數(shù)據(jù)寄存器(HPID)、HPI地址寄存器(HPIA)、HPI控制寄存器(HPIC)。HPID中存放的是主機從TMS320C6713存儲空間中寫入的數(shù)據(jù)。HPIA中存放的是主機訪問TMS320C6713存儲空間的地址。HPIC中存放的是TMS320C6713的控制信息,其高16位和低16位內(nèi)容相同。

          3 設(shè)計實現(xiàn)

          實際上, 整個CPLD 設(shè)計的主要任務(wù)也是圍繞這幾個信號的設(shè)計展開的。

          用VHDL實現(xiàn)CPLD的內(nèi)部邏輯實現(xiàn),VHDL 是用來描述從抽象到具體硬件級別的工業(yè)標(biāo)準(zhǔn)語言, 并已成為一種通用的硬件設(shè)計交換媒介。。VHDL硬件描述語言設(shè)計方法其靈活性、可移植性都是非常好的,在對設(shè)計的仿真方面同圖形化硬件描述方法一樣都是非常優(yōu)秀的,設(shè)計效率在大規(guī)模設(shè)計中將明顯高于原理圖設(shè)計。

          部分VHDL程序如下:
          has ='1';
          hrw =crw;
          hcntl0 =ca2;
          hcntl1 =ca3;
          hds1 ='1';
          hds2 =cis and hrdy;
          cirq1=hint;
          ca_l =ca16ca15ca14;
          ca_m = ca5ca4;
          p1:process (ca_l,ca_m)
          begin
          case ca_m is
          when 00=>ec=1110;
          when 01=>ec=1101;
          when 10=>ec=1011;
          when 11=>ec=0111;
          when others =>ec=1111;
          end case;
          hcs =ec(0);
          end procESS p1;

          具體的設(shè)計思路如下:本設(shè)計中,因為還有其他板內(nèi)部件需要選擇,所以采用地址的4和5譯碼來控制HCS,當(dāng)為“00”時HCS有效。設(shè)計時將HDS1 固定接高電平, 并由IS和HRDY信號產(chǎn)生邏輯來控制HDS2 信號。當(dāng)HRDY處于無效狀態(tài)(即HPI 端口未準(zhǔn)備就緒) 時, HDS2 信號不變,不采樣任何信號;而當(dāng)HRDY有效時, HDS2 信號同IS 信號保持一致, 并在IS 的下降沿采樣控制信號,在上升沿采樣數(shù)據(jù)信號。在一次傳輸開始之前和結(jié)束之后, HDS2 都要保持為高電平。可用HDS2 作為時鐘輸入的兩分頻電路來產(chǎn)生HHWIL ; HCNTL[ 0 : 1] 接兩根地址線,以便由上層驅(qū)動程序來控制對HPI 口內(nèi)部不同寄存器的訪問, 并由CR/W來產(chǎn)生HR/ W信號。

          4 結(jié)束語

          VHDL程序仿真成功后后,通過PC并口下載到ALTERA公司的芯片EPM7128AE-144,先進的EDA工具可以減少設(shè)計周期和開發(fā)費用,通過功能和時序仿真,可以降低設(shè)計風(fēng)險。同時,CPLD的在線可編程特性使得修改設(shè)計相當(dāng)容易。本設(shè)計應(yīng)用于蘭州重離子加速器冷卻儲存環(huán)的控制系統(tǒng)中。



          關(guān)鍵詞: CPLD DSP VME 背板

          評論


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