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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的CMI編碼系統(tǒng)設計

          基于FPGA的CMI編碼系統(tǒng)設計

          作者: 時間:2011-03-17 來源:網(wǎng)絡 收藏

          圖1給出了的配置電路圖,主要包括的主動(Active)方式和JTAG方式加載電路,以及專用串行配置芯片EPCS1與的連接關系。

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

          2.JPG

          2 系統(tǒng)的程序設計
          在系統(tǒng)程序設計過程中,將m序列作為基帶輸入碼,然后程序再對m序列進行碼型變換,最后輸出碼型。通過對CMI規(guī)則的分析,1位輸入碼元對應2位輸出,因此CNI碼元輸出速率是輸入m序列碼元速率的2倍。在程序設計中,要保持m序列進程時鐘為CMI編碼進程時鐘的2倍頻,這是完成CMI編碼任務的前提。
          m序列是最長線性反饋移存器序列的簡稱,m序列具有平衡性、游程特性、線性疊加性、自相關特性和偽噪聲特性,應用十分廣泛。設計采用m序列產(chǎn)生器產(chǎn)生的m序列作為CMI編碼的數(shù)據(jù)源,用4級移存器構成周期為P=24-1=15的m序列發(fā)生器。m序列發(fā)生器的結構圖如圖2所示,其中A0、A1、A2、A3分別代表一個寄存器。

          3.JPG


          在對m序列進行CMI編碼的程序設計時,要注意的問題是,1碼對應的輸出是與前一個1碼的狀態(tài)有關,因此要對1碼的狀態(tài)進行記錄,從而實現(xiàn)1碼對應的00和11碼型交替輸出。
          CMI編碼軟件環(huán)境采用的是QuartusⅡ軟件平臺,QuartusⅡ是一種綜合開發(fā)工具,它集成了Altera的FPGA/CPLD開發(fā)流程中所涉及的所有工具和第三方軟件接口。通過使用此綜合開發(fā)工具,設計者可以創(chuàng)建、組織和管理自己的設計,主要包括設計輸入、綜合、布局布線、時序分析、仿真、編程與配置過程。QuartusⅡ支持多時鐘定時分析,內(nèi)嵌SignalTapⅡ邏輯分析器、功率估計器等高級工具,易于管腳分配和時序約束,具有強大的HDL綜合能力。
          SignalTapⅡ邏輯分析器是很重要的測試工具,它是對FPGA的硬件信號進行讀取,可以捕獲和顯示FPGA內(nèi)部的實時信號行為,從而能夠讓設計者直觀的判斷出邏輯是否準確。SignalTapⅡ的功能類似于邏輯分析儀,但與傳統(tǒng)的邏輯分析儀相比,具有如下優(yōu)點:使用SignalTapⅡ邏輯分析器不占用額外的I/O管腳,若使用傳統(tǒng)的邏輯分析儀觀察信號波形,則必須將待觀察信號引到空閑管腳;SignalTapⅡ邏輯分析器不占用PCB上的空間,若使用傳統(tǒng)邏輯分析儀,需要從FPGA器件上引出測試管腳到PCB上,這樣增加了PCB走線難度;SignalTapⅡ邏輯分析器還不會破壞信號的完整性;SignalTapⅡ邏輯分析器集成在QuartusⅡ軟件中,無需另外付費,而傳統(tǒng)的邏輯分析儀則價格昂貴。
          程序采用Verilog HDL語言進行設計,下面給出了CMI編碼的部分源程序:
          4.JPG



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();