基于FPGA的單片機外圍接口電路設(shè)計
摘要:利用現(xiàn)場可編程門陣列 FPGA實現(xiàn)單片機的外設(shè)接口電路可以簡化單片機系統(tǒng)的硬件電路,提高系統(tǒng)的集成度、可靠性和系統(tǒng)設(shè)計的靈活性。本文介紹了基于 FPGA的單片機外設(shè)接口電路的基本設(shè)計方法,分別給出了各個功能模塊的設(shè)計思路和實現(xiàn)方法。所有功能的實現(xiàn)全部采用 VHDL進行描述。
0 引言
單片機具有性價比高、功能靈活、易于人機對話、數(shù)據(jù)處理能力強等特點。單片機應(yīng)用系統(tǒng)通常由鍵盤、顯示器、通信接口、存儲器、A/D、D/A電路等部分組成。傳統(tǒng)的單片機系統(tǒng)經(jīng)常要用標(biāo)準(zhǔn)的邏輯電路或?qū)S玫慕涌谛酒瑏斫M成外圍電路,如地址譯碼、I/O擴展等功能通常由標(biāo)準(zhǔn)的TTL/COMS邏輯電路或各種專用接口芯片實現(xiàn),這樣就會使系統(tǒng)的芯片數(shù)增多,接線復(fù)雜,從而使電路板面積增大、可靠性和 EMI性能減低,難以實現(xiàn)設(shè)計的小型化、集成化和高可靠性。而可編程門陣列FPGA的LCA結(jié)構(gòu)和它豐富的內(nèi)部資源可以用來設(shè)計各種組合邏輯和時序邏輯電路,因此使用FPGA設(shè)計單片機的外圍電路能夠大大簡化系統(tǒng)硬件結(jié)構(gòu),使系統(tǒng)的設(shè)計、修改和擴展都變的十分靈活方便。本文通過對FPGA器件進行功能設(shè)計,取代傳統(tǒng)單片機系統(tǒng)中外設(shè)接口用的標(biāo)準(zhǔn)邏輯電路和專用的接口芯片,使單片機系統(tǒng)的硬件電路大大簡化并提高其可靠性。當(dāng)需要改變系統(tǒng)性能時,可以通過對FPGA重新編程而不用改變硬件電路,提高了系統(tǒng)設(shè)計的靈活性。
1 系統(tǒng)設(shè)計方案
根據(jù)一般單片機系統(tǒng)設(shè)計的需要,本文所設(shè)計的系統(tǒng)具有以下幾個功能模塊,如圖1所示。
1 )通用邏輯模塊:根據(jù)具體的情況產(chǎn)生各種不同的邏輯電路及控制信號,代替?zhèn)鹘y(tǒng)的標(biāo)準(zhǔn)邏輯芯片。本文將其設(shè)計為擴展存儲器時用到的地址鎖存器。
2 )鍵盤接口模塊:代替?zhèn)鹘y(tǒng)的單片機與鍵盤的接口電路,用 FPGA編程完成消除抖動及按鍵識別功能。本文將其設(shè)計為4×4掃描鍵盤的通用接口。
3 )顯示接口模塊:代替?zhèn)鹘y(tǒng)的單片機與顯示器的接口電路,用 FPGA編程完成譯碼、掃描等功能。本文將其設(shè)計為4位七段動態(tài) LED接口。
1 )串并行接口模塊:實現(xiàn)單片機與其外設(shè)的串行或并行數(shù)據(jù)通信。本文將其設(shè)計為串行通信接口模塊。
2 )其他擴展模塊:實現(xiàn)單片機的一些其他常用功能,如 PWM驅(qū)動、A/D、D/A轉(zhuǎn)換的控制等。
本設(shè)計所采用的FPGA器件是 ALTERA公司的Cyclone-TM系列芯片 EP1C6Q240C8,它具有5980個邏輯單元, 92160個比特的嵌入 RAM。系統(tǒng)開發(fā)工具為硬件描述語言VHDL,開發(fā)平臺為Quartus Ⅱ。
2 系統(tǒng)模塊實現(xiàn)
2.1 通用邏輯模塊
FPGA可以設(shè)計成各種組合邏輯和時序邏輯電路,完成鎖存、三態(tài)輸出、多路選擇、編譯碼、計數(shù)、寄存等功能。在實際應(yīng)用中可以根據(jù)需要選擇相應(yīng)的功能模塊組成符合設(shè)計要求的邏輯功能。
本系統(tǒng)中設(shè)計的為擴展存儲器時用的地址鎖存器(功能與帶三態(tài)緩沖輸出的8D鎖存器
74LS373相似),其 VHDL描述為: process(oe,enable,d) begin if e='1' then
q<="ZZZZZZZZ";
else if enable='1' then q<=d; end if;
end if;
end procESS; 其中oe為三態(tài)門的使能信號,當(dāng) oe為低電平時三態(tài)門處于導(dǎo)通狀態(tài),允許q輸出到外部,當(dāng) oe為高電平時三態(tài)門處于斷開狀態(tài),輸出處于浮空狀態(tài); enable為鎖存控制信號,當(dāng)做鎖存器用時,應(yīng)使oe為低電平,這時,當(dāng) enable為高電平時,鎖存器輸出狀態(tài)與輸入狀態(tài)相同,當(dāng)enable從高電平返回到低電平(即下降沿)時,輸出不變,即輸入端的數(shù)據(jù)鎖入鎖存器中。
2.2 鍵盤接口模塊鍵盤是單片機應(yīng)用系統(tǒng)中一個很重要的部件,它能實現(xiàn)向系統(tǒng)輸入數(shù)據(jù)、傳送命令等功 能,是人工干預(yù)系統(tǒng)工作的重要手段。本文所設(shè)計的鍵盤接口電路框圖如圖2所示,由分頻電路、鍵盤掃描計數(shù)器電路、鍵盤按鍵檢測電路、按鍵抖動消除電路和鍵盤編碼電路等組成。
其中clock為時鐘脈沖, col為鍵盤的列輸入,row為鍵盤的行輸出,scan_f為掃描頻率, key_valid為按鍵確定信號,butt_code為按鍵值。首先,將外部時鐘信號分頻為適合鍵盤的掃描頻率;計數(shù)器的計數(shù)值輸出到按鍵檢測電路,檢測使用者是否按下鍵盤,同時輸出到鍵盤編碼電路對鍵盤數(shù)值編碼;當(dāng)使用者按下鍵盤時,按鍵檢測電路的 key_pressed將為0,并輸出到計數(shù)器使計數(shù)停止,同時抖動消除電路在確認使用者正確按鍵后,輸出按鍵確定信號。
2.3 顯示接口模塊
顯示功能是單片機應(yīng)用系統(tǒng)中實現(xiàn)人機對話的基本功能之一,用戶通過靈活的顯示方式方便的了解系統(tǒng)的工作情況。在簡單的應(yīng)用系統(tǒng)中常用LED數(shù)碼管或LCD顯示器顯示數(shù)據(jù)或工作狀態(tài)。本文設(shè)計的為一個4位七段動態(tài) LED數(shù)碼管顯示接口電路,電路框圖如圖3所示,它由BCD多路選擇器、BCD對應(yīng)七段顯示器編碼電路、計數(shù)譯碼電路和七段顯示器掃描電路等組成。其中clk為同步時鐘脈沖信號, flk_ena為掃描時鐘脈沖信號, bcd_data為輸入的BCD碼,ledseg為七段顯示器數(shù)值輸出, ledcom為七段顯示器輸出使能。
2.4 串并行接口模塊
雖然大多數(shù)單片機都帶有通用的串行接口,但自行設(shè)計的接口意味著更大的使用靈活性,特別是FPGA的高速特性允許更高的數(shù)據(jù)傳輸速度,在實用中有重要意義。作為范例, 本文設(shè)計了基于RS232-C標(biāo)準(zhǔn)的異步串行通信接口,它主要由數(shù)據(jù)總線接口、控制邏輯、波特率發(fā)生器、發(fā)送和接收等部分組成,其功能主要包括微處理器接口,用于數(shù)據(jù)傳輸?shù)木彌_器(Buffer)、幀產(chǎn)生、奇偶校驗、并轉(zhuǎn)串,用于數(shù)據(jù)接收的緩沖器、幀產(chǎn)生、奇偶校驗、串轉(zhuǎn)并等。
2.4.1 接收模塊
異步串行通信是逐個字符進行傳輸?shù)?,并且傳送的每一個字符格式都相同,均以一位起始位開始,中間有若干位數(shù)據(jù)位,然后是一位校驗位(可選),昀后是停止位,停止位后面是不定長度的空閑位。這樣就保證了起始位開始處一定有一個下跳沿。接收邏輯首先通過檢測數(shù)據(jù)的下降沿來檢測起始位,產(chǎn)生采樣時鐘,然后利用采樣時鐘來采樣串行輸入數(shù)據(jù),在緩沖器中做移位操作,同時產(chǎn)生校驗位,在第 8位處比較校驗位是否正確,在第 9位處比較停止位是否為高,然后產(chǎn)生錯誤指示信號。本文采用狀態(tài)機進行設(shè)計,其 FSM狀態(tài)轉(zhuǎn)換圖如圖 4所示。
2.4.2 發(fā)送模塊
發(fā)送部分檢測控制信號,當(dāng)有數(shù)據(jù)要發(fā)送時只要按順序依次發(fā)送 1位起始位、 5-7位數(shù)據(jù)位、一位校驗位(帶校驗時)和 1位(或 1.5位、2位)停止位即可。其 FSM狀態(tài)轉(zhuǎn)換圖如圖 5所示。
停止位發(fā)送完畢
無數(shù)據(jù)要發(fā)送發(fā)送停止位
3 結(jié)束語
將設(shè)計下載到芯片中,綜合報告顯示只消耗了FPGA很少的一部分資源。整個系統(tǒng)的功耗也大為降低。由于FPGA為大規(guī)模集成電路,其集成度和工作速度隨著技術(shù)進步和產(chǎn)品升級不斷提高,所以用FPGA實現(xiàn)單片機外圍接口電路可以大大改善單片機系統(tǒng)的性能,系統(tǒng)的外圍邏輯越是復(fù)雜,FPGA的潛力越能得到更好的發(fā)揮。