FPGA實(shí)現(xiàn)UART和MCU一體化設(shè)計(jì)
摘要:現(xiàn)代數(shù)字電子系統(tǒng)設(shè)計(jì)正在朝著新的方向發(fā)展,即利用FPGA技術(shù)進(jìn)行系境設(shè)計(jì)。介紹了一種利用FPGA來實(shí)現(xiàn)通用串行異步收發(fā)器(UA-RT)和控制通信的MCU的數(shù)字系統(tǒng),底層設(shè)計(jì)模塊采用VHDL硬件描述語言實(shí)現(xiàn),并進(jìn)行了仿真驗(yàn)證。該設(shè)計(jì)方法和理念為以后的計(jì)算機(jī)系統(tǒng)以及其他的數(shù)字電子系統(tǒng)提供了一個(gè)新的思路,應(yīng)用此技術(shù)可以使系統(tǒng)設(shè)計(jì)更加緊湊、可靠。
關(guān)鍵詞:計(jì)算機(jī)系統(tǒng);FPGA;VHDL;UART;MCU;有限狀態(tài)機(jī)
計(jì)算機(jī)技術(shù)和微電子技術(shù)的發(fā)展為現(xiàn)代電子設(shè)計(jì)提供了新的方法和途徑。傳統(tǒng)的電子設(shè)計(jì)采用功能獨(dú)立的分立元件進(jìn)行功能組合從而實(shí)現(xiàn)特定的功能,計(jì)算機(jī)設(shè)計(jì)初期也一直采用這種模式。但是隨著近代電子技術(shù)的進(jìn)步,尤其是FPGA(Field Programmable Gate Array)的出現(xiàn),使得電子設(shè)計(jì)和計(jì)算機(jī)設(shè)計(jì)都發(fā)生了很大的變化,尤其是在數(shù)字電子系統(tǒng)的設(shè)計(jì)領(lǐng)域。利用現(xiàn)場可編程門陣列FPGA可以實(shí)現(xiàn)任何數(shù)字器件的功能,而且還可以大大縮短設(shè)計(jì)時(shí)間,減少PCB的面積,提高信號的傳輸質(zhì)量,提高系統(tǒng)的可靠性,增加設(shè)計(jì)的靈活性和可維護(hù)性。本文采用FPGA技術(shù)實(shí)現(xiàn)一個(gè)MCU與串行通信外設(shè)進(jìn)行簡易通信的平臺,一方面了解了計(jì)算機(jī)的一些控制原理和工作流程;另一方面可以了解利用FPGA進(jìn)行電子設(shè)計(jì)的優(yōu)越性。
1 FPGA與電子設(shè)計(jì)
用FPGA進(jìn)行計(jì)算機(jī)I/O通信設(shè)備的開發(fā)設(shè)計(jì),實(shí)現(xiàn)了功能類似Intel 8250及8251,美國半導(dǎo)體公司的16550串行通信接口的功能,同時(shí)實(shí)現(xiàn)了帶有簡單類忙編指令的微控制單元MCU來控制與外圍I/O設(shè)備的通信。整個(gè)設(shè)計(jì)采用VHDL在Altera的QuartusⅡV6.0進(jìn)行設(shè)計(jì)實(shí)現(xiàn),并進(jìn)行仿真驗(yàn)證。
1.1 FPGA的原理及其開發(fā)平臺
通常的FPGA由布線資源分隔的可編程邏輯單元構(gòu)成陣列,又由司編程I/O單元圍繞陣列構(gòu)成整個(gè)芯片,排成這列的邏輯單元由布線通道中可編程內(nèi)連線連接來實(shí)現(xiàn)一定的邏輯功能,也就是說分段的互連線可以通過可編程開關(guān)以任意方式連接起來形成邏輯單元的信號線。一個(gè)FPGA主要由邏輯陣列塊(LAB)、I/O塊、RAM塊和可編程的行/列線等組成。
1.2 FPGA的開發(fā)軟件及設(shè)計(jì)流程
FPGA的開發(fā)軟件一般由生產(chǎn)FPGA的廠商根據(jù)自己的產(chǎn)品特性提供專門的開發(fā)工具,目前主要流行的是Xilinx的ISE平臺和Altera的Quar-tus平臺。本文使用的是后者。使用該設(shè)計(jì)開發(fā)軟件能夠完成FPGA系統(tǒng)設(shè)計(jì)的流程基本包括了設(shè)計(jì)輸入(原理圖輸入或HDL語言描述輸入)、綜合、布線、下載等工作。本文所設(shè)計(jì)的電子系統(tǒng)設(shè)計(jì)輸入采用VHDL語言。
選定了設(shè)計(jì)平臺后,只要考慮所要設(shè)計(jì)系統(tǒng)的功能,借助集成開發(fā)環(huán)境即可完成想要的設(shè)計(jì)。一般來說,利用FPGA進(jìn)行電子設(shè)計(jì)的完整的設(shè)計(jì)流程分為電路的設(shè)計(jì)與輸入、功能仿真、綜合、綜合后仿真、實(shí)現(xiàn)、布局布線后仿真、配置下載與調(diào)試等步驟。由于FPGA的靈活性和設(shè)計(jì)的可重復(fù)性,可以保證在任何仿真或者驗(yàn)證步驟出現(xiàn)問題時(shí)都能根據(jù)錯(cuò)誤定位返回相應(yīng)的步驟,以進(jìn)行更改或者重新設(shè)計(jì)。這是傳統(tǒng)電子設(shè)計(jì)方法無法比擬的。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
本文所設(shè)計(jì)的系統(tǒng)實(shí)現(xiàn)了一個(gè)可簡易匯編指令的微控制器MCU和一個(gè)計(jì)算機(jī)組成中的外圍串行通信I/O設(shè)備。通過實(shí)現(xiàn)的一部分I/O輸入/輸出指令和條件跳轉(zhuǎn)指令可實(shí)現(xiàn)與外設(shè)的通信控制。系統(tǒng)功能模塊劃分如圖1所示。
2.1 串行通信外設(shè)的設(shè)計(jì)與實(shí)現(xiàn)
在計(jì)算機(jī)系統(tǒng)組成中,串行通信占據(jù)重要地位,它的使用范圍包括計(jì)算機(jī)與外部設(shè)備之間,計(jì)算機(jī)與計(jì)算機(jī)之間、甚至在進(jìn)行前期CPU設(shè)計(jì)時(shí)都會(huì)用到。傳統(tǒng)的設(shè)計(jì)方法是應(yīng)用Intel公司的8250/8251或者美國半導(dǎo)體的16550等芯片,但因設(shè)計(jì)復(fù)雜,占用電路體積大,而且出現(xiàn)問題不容易跟蹤定位,所以本文采用FPGA實(shí)現(xiàn)。將串行通信的關(guān)鍵器件UART集成到FPGA內(nèi)部,增加系統(tǒng)的可靠性,縮小PCB板體積,使得系統(tǒng)更加緊致,且能根據(jù)需要進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)、擴(kuò)充和裁剪。實(shí)現(xiàn)的該I/O設(shè)備功能劃分如圖2所示。
評論