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