FPGA實(shí)現UART和MCU一體化設計
2.1.2 輸入/輸出緩沖區(FIFC))的設計與實(shí)現
FIFO(First In First Out)是一種先進(jìn)先出的緩沖區結構。主要在通信過(guò)程中解決通信兩端速度不匹配的問(wèn)題。訪(fǎng)問(wèn)FIFO僅需要讀/寫(xiě)控制線(xiàn),不需要地址線(xiàn),因此采用FIFO實(shí)現的緩沖區接口簡(jiǎn)單,讀寫(xiě)方便。由于文中的微控制器MCU和I/O設備均在FPGA內部實(shí)現,因此采用同步FIFO實(shí)現,即寫(xiě)端口和讀端口采用同一個(gè)時(shí)鐘進(jìn)行控制操作。該系統分別實(shí)現了位寬為8位,深度為256 b的緩沖區來(lái)對MCU發(fā)送給外設的數據和從外設接收的數據進(jìn)行緩沖處理。實(shí)現方法可以采用Altera公司FPGA內部的資源實(shí)現。對FIFO的讀/寫(xiě)控制可根據緩沖區的使用狀態(tài)和MCU發(fā)送來(lái)的命令來(lái)實(shí)現。FIFO模塊的結構圖如圖7所示。本文引用地址:http://dyxdggzs.com/article/191268.htm
讀信號和寫(xiě)信號由微控制器MCU通過(guò)向I/O設備進(jìn)行數據輸入和輸出操作產(chǎn)生??諛酥竞蜐M(mǎn)標志用于MCU探測緩沖區狀態(tài),應用查詢(xún)方式對外設進(jìn)行讀寫(xiě)數據操作。對于發(fā)送緩沖區,當緩沖區處于滿(mǎn)狀態(tài)時(shí)表明已經(jīng)沒(méi)有可用的存儲空間緩沖數據,此時(shí)不允許進(jìn)行寫(xiě)操作;對于接收緩沖區,當緩沖區處于空狀態(tài)時(shí),表明沒(méi)有從設備收到任何的時(shí)間,此時(shí)不允許微控制器MCU從外設接收緩沖區讀取數據。
通過(guò)QuartusⅡ產(chǎn)生的FIFO如圖8所示。
圖8中,aclr是異步復位信號;clock是時(shí)鐘輸入;rdreq和wrreq分別是讀和寫(xiě)信號線(xiàn);data[7…O]是FIFO的并行數據輸入端;q[7…0]是FIFO的并行數據輸出端;empty和full分別為FIFO空滿(mǎn)標志的狀態(tài)線(xiàn);usedw[7…O]為當前狀態(tài)下FIFO已經(jīng)使用的存儲量,即FIFO中已經(jīng)寫(xiě)入并保存的數據量。
2.2 微控制器MCU的設計與實(shí)現
在一個(gè)計算機系統中,中央處理器處于核心控制地位,它不僅是參與運算的核心器件,而且是控制外設的中樞。一般情況下,它實(shí)現了一定的功能指令集,用來(lái)由用戶(hù)自己編程控制外部設備動(dòng)作或者進(jìn)行一些算術(shù)邏輯運算。本文中所實(shí)硯的微控制器MCU主要以實(shí)現對外設的控制,實(shí)現了對外設端口的讀寫(xiě)控制以及一些必要的程序控制指令。在一個(gè)微控制器的設計中,指令系統的設計尤其重要,它不僅關(guān)系到控制器的設計,也關(guān)系到軟件程序的設計方法。指令系統的設計分為指令集設計和指令動(dòng)作設計兩部分,前者側重于控制器的總體功能;后者側重于指令的具體實(shí)現。進(jìn)行指令設計時(shí)首先要進(jìn)行指令分析,根據系統所要完成的功能,完成所需指令的功能設想,這是指令設計的基礎;然后分析指令該放在什么地方,微控制器如何取指令和對指令進(jìn)行識別等操作;最后確定指令格式以及每個(gè)指令完成指定功能所需要的一系列基本動(dòng)作過(guò)程??梢允褂肁Ltera公司FPGA內部的ROM作為程序存儲器,詳細的實(shí)現過(guò)程參看參考文獻。通過(guò)此系統進(jìn)行分析,設計實(shí)現如表1所示指令。每條指令功能的完成具有取指令、指令譯碼、執行指令階段。指令的分析譯碼執行由狀態(tài)機邏輯控制具體實(shí)現。
評論