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

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > PSD813F2在FPGA配置中的應(yīng)用

          PSD813F2在FPGA配置中的應(yīng)用

          作者: 時(shí)間:2004-12-08 來源:網(wǎng)絡(luò) 收藏
          摘要:可編程外圍器件應(yīng)用于單片機(jī)系統(tǒng)后,簡(jiǎn)化了單片機(jī)外圍電路的設(shè)計(jì),增加了系統(tǒng)的可靠性;利用與單片機(jī)組成的系統(tǒng),通過計(jì)算機(jī)串口對(duì)進(jìn)行實(shí)時(shí)在線編程、仿真和配置。

          關(guān)鍵詞:可編程外圍器件() 在應(yīng)用可編程(IAP) 可編程門陣列()

          隨著單片機(jī)的廣泛應(yīng)用,其性能不斷提高,集成度也日益提高。然而,傳統(tǒng)的單片機(jī)系統(tǒng)設(shè)計(jì)需要眾多分離器件(如地址鎖存器、譯碼器、RAM、EPROM、PLD等),使得系統(tǒng)復(fù)雜、可靠性低,并且調(diào)試繁瑣、效率較低??删幊涕T陣列()需要外置存儲(chǔ)器,且配置存儲(chǔ)器多為OTP型,價(jià)格較高;加之,利用FPGA的JTAG口配置FPGA距離有限,調(diào)試不甚方便。

          本文主要介紹一種基于閃爍存儲(chǔ)器的在線可編程微處理器外圍器件PSDF2組成的單片機(jī)系統(tǒng),同時(shí)利用該系統(tǒng)配置FPGA。即通過計(jì)算機(jī)串口將FPGA(本文以Altera公司10K系列為例)設(shè)計(jì)在線下載到單片機(jī)系統(tǒng),由PSDF2配置FPGA,實(shí)現(xiàn)IAP(In Application Programming)的功能。

          1 PSDF2性能特點(diǎn)

          PSD813F2是PSD(Programmable System Devices)家庭的新成員,是基于閃爍存儲(chǔ)器的在線可編程外圍器件。它將單片機(jī)系統(tǒng)所需的外圍器件集成在一起,并能與單片機(jī)進(jìn)行無(wú)縫連接,因而簡(jiǎn)化了調(diào)度,提高了可靠性;同時(shí),它與當(dāng)前流行的眾多單片機(jī)有極簡(jiǎn)單的接口,便于實(shí)現(xiàn)簡(jiǎn)單、靈活的嵌入式設(shè)計(jì);它還集成了優(yōu)化的“微控制器宏單元”邏輯結(jié)構(gòu),使得系統(tǒng)地址/數(shù)據(jù)總線可以與內(nèi)部寄存器直接互連,簡(jiǎn)化了控制總線的設(shè)計(jì)。此外,PSD813F2還具有以下一些特性:

          ①內(nèi)部數(shù)據(jù)總線為8位,可方便地與各類8位單片機(jī)直接相連。如要與16位單片機(jī)相連,需用2片PSD813F2構(gòu)成16位的多路復(fù)用接口,并且地址必須循環(huán)移位,以保證MCU工作時(shí)能同時(shí)正確接收不同PSD813F2 ROM中的信息。

          ②內(nèi)部包含1Mbit的大容量Flash ROM,這分為8個(gè)大小相同的塊(如128K8bit或64K8bit),由用戶規(guī)定的地址訪問;另外還有256K的Flash OPT ROM及16KB的SRAM,其中SRAM可配置為2K8bit或16K1bit。

          ③內(nèi)存(Flash ROM)或Flash OPT ROM可同時(shí)編程,即在執(zhí)行來自一個(gè)存儲(chǔ)器的代碼時(shí)可同時(shí)對(duì)另一個(gè)存儲(chǔ)器編程。

          ④帶有16個(gè)輸出宏單元和24個(gè)輸入宏單元,能方便實(shí)現(xiàn)多種邏輯組合功能,包括內(nèi)外的狀態(tài)信號(hào)產(chǎn)生、地址譯碼等。

          ⑤帶有27個(gè)可重建的I/O端口,可以用作不同的I/O端口,如單片機(jī)的I/O、PLD的I/O;最多可提供19個(gè)外部片選信號(hào),其中16個(gè)I/O可配置為漏極輸出。

          ⑥具有可編程電源管理功能(PMU),加之低功耗的CMOS技術(shù),使得其工作時(shí)功耗很低;另外還具有自動(dòng)檢測(cè)控制器工作的功能,使之在不工作時(shí)將PSD轉(zhuǎn)入低功耗狀態(tài)。

          由于PSD813F2具有以下特性,因而能方便實(shí)現(xiàn)I/O重建、擴(kuò)展,并具有通過編程改變?cè)O(shè)計(jì)的靈活性,方便與各類不同單片機(jī)實(shí)現(xiàn)無(wú)縫連接。其內(nèi)部框圖如圖1所示。

          2 系統(tǒng)設(shè)計(jì)

          整個(gè)設(shè)計(jì)是利用計(jì)算機(jī)將FPGA的相關(guān)設(shè)計(jì)經(jīng)單片機(jī)傳送存儲(chǔ)器,由單片機(jī)配置PSD813F2,再由PSD813F2配置FPGA,實(shí)現(xiàn)IAP的功能,特別適于較遠(yuǎn)距離在線編程、仿真。另外,利用計(jì)算機(jī)的串行口可以與單片機(jī)進(jìn)行較長(zhǎng)距離的通信。

          此外,由于PSD813F2片內(nèi)有編程邏輯宏單元(CPLD),所以在MCU與PSD813F2之間不需要地址鎖存器及外部程序存儲(chǔ)器;并且PSD與LCD、FPGA的接口地直接用其PA、PB口連接,只需在軟件設(shè)計(jì)和MCU程序中相應(yīng)設(shè)計(jì)為I/O模式或地址鎖存模式。

          另外,F(xiàn)PGA的使用中通常需要時(shí)鐘信號(hào),并可能需用好幾路同的時(shí)鐘信號(hào)。在系統(tǒng)中采用ICS公司的ISC501倍頻芯片,可實(shí)現(xiàn)2~8共8種倍頻方式,最高可實(shí)現(xiàn)160MHz時(shí)鐘;加之使用內(nèi)部分頻,可以滿足多數(shù)設(shè)計(jì)需要。

          系統(tǒng)設(shè)計(jì)框圖如2所示。

          3 MCU與PSD813F接口設(shè)計(jì)

          PSD813F2具有大容量Flash ROM、16個(gè)輸出宏單元和24個(gè)輸入宏單元,因而在與單片機(jī)組成系統(tǒng)時(shí)很少需要外圍分立器件,多數(shù)通過PSD813F2中的宏單元邏輯組合產(chǎn)生與單片機(jī)連接的地址總線、數(shù)據(jù)總線、控制總線;同時(shí),通過內(nèi)部的邏輯譯碼產(chǎn)生對(duì)3塊獨(dú)立存儲(chǔ)區(qū)片選信號(hào)。另外,單片機(jī)與PSD813F2D內(nèi)部宏單元的D觸發(fā)器直通,使得設(shè)計(jì)計(jì)數(shù)器、外圍邏輯控制極為方便。

          PSD813F2內(nèi)部包含3塊并行、相互獨(dú)立的存儲(chǔ)器區(qū),獨(dú)立或并行的單片機(jī)在任何時(shí)候都可以從一塊存儲(chǔ)器執(zhí)行擦寫另一塊存儲(chǔ)器的操作。這使得單片機(jī)能夠在執(zhí)行程序期間,通過改變PSD內(nèi)控制器的內(nèi)容,而動(dòng)態(tài)改變程序和數(shù)據(jù)空間的地址范圍;同時(shí),系統(tǒng)也能對(duì)邏輯資源、擴(kuò)展輸入和輸出端口進(jìn)行編程,使系統(tǒng)具有實(shí)時(shí)ISP的能力。

          4 PSD813F2與FPGA接口設(shè)計(jì)

          PSD813F2可以配置Altera或Xilinx的FPGA(本文以Altera的為例)。Altera公司的EPF10K10/20是其萬(wàn)門級(jí)FPGA的代表,原來需要外置存儲(chǔ)器,且配置存儲(chǔ)器EPC1441是OTP型,價(jià)格較高;而PSD813F2具有很好的在線編程功能,并且擦寫次數(shù)10萬(wàn)次,同時(shí),1片PSD813F2可以配置10片EPF10K10,因而其具有良好的性價(jià)比。

          用PSD813F2配置Altera公司的EPF10K系列FPGA,主要有以下信號(hào):

          DCLK――輸入移位時(shí)鐘;

          DATA――數(shù)據(jù);

          nSTATUS――狀態(tài)信號(hào);

          CONF_DONE――配置是否成功信號(hào);

          nCONFIG――開始配置信號(hào)。

          在實(shí)際配置電路中采用FPGA的被動(dòng)串行方式,因而EPF10K系列FPGA的MSE0、MSE1均接地;同時(shí)nSTATUS、CONF_DONE、nCONFIG均需通過上拉電阻接電源。配置接口的信號(hào)線只需由PSD813F2的PA或PB口配置即可,如圖3所示。

          5 軟件設(shè)計(jì)

          PSD813F2編程是在硬件基礎(chǔ)上,利用專用開發(fā)軟件PSDsoft進(jìn)行系統(tǒng)開發(fā)的;而PSDsoft是一套在Windows環(huán)境下運(yùn)行的軟件工具,運(yùn)用可視化界面進(jìn)行編程,具有人機(jī)交互功能,其一般開發(fā)流程如圖4所示。

          然而對(duì)于單片機(jī)系統(tǒng),更熟悉的是采用C51或匯編進(jìn)行編程。利用單片機(jī)對(duì)PSD813F2進(jìn)行配置時(shí),所使用的C51程序中最主要的是對(duì)PSD813F2進(jìn)行初始化的子程序:

          void InitPSD813F2(void){ ;初始化程序

          //PA0 LCD_R/W ;定義PA0為L(zhǎng)CD讀寫

          //PA1 LCD_RS ;定義PA1為L(zhǎng)CD復(fù)位

          //PA2 FPGA_DCLK ;定義PA2為FPGA時(shí)鐘

          PSDPACtrlReg=0x03 ;//設(shè)定PA口的讀寫模式

          PSDPADir=0xff;

          PSDPADri=0x00;

          //PB0 FPGA-CON_DONE

          //PB1 FPGA-nSTATUS

          //PB2 FPGA-DATA

          //PB3 FPGA-nCONFIG

          //PB4 LCD-CS_LCD

          PSDPBCtrlReg=0x00 ;//設(shè)定PB為MCU的讀寫

          PSDPBDir=0x0fc ;//設(shè)定PB讀寫模式

          PSDPBDri=0x00;

          }

          完整的PSD源程序請(qǐng)見網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。

          結(jié)束語(yǔ)

          由于PSD813F2具有高的集成度和很強(qiáng)的在線編程功能,與單片機(jī)組成系統(tǒng)后可方便地嵌入FPGA的配置中。實(shí)際開發(fā)的系統(tǒng)能夠滿足各類FPGA配置的要求,同時(shí),實(shí)際用VC開發(fā)的應(yīng)用于實(shí)際的程序下載到PSD后,可實(shí)時(shí)下載程序到PSD,也可上載PSD的任一MainFlash的數(shù)據(jù)到計(jì)算機(jī),也可隨時(shí)監(jiān)測(cè)PSD片內(nèi)任一RAM中的數(shù)據(jù),真正做到了ISP、IAP。另外,配置Altera的FPGA與Xilinx的FPGA時(shí),達(dá)到了與外置配置存儲(chǔ)器完全相同的效果。



          關(guān)鍵詞: 813F FPGA PSD 813

          評(píng)論


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