一種基于FPGA的接口電路設(shè)計(jì)
【摘 要】 在簡要介紹了PC/AT鍵碼、旋轉(zhuǎn)開關(guān)和EPM7128結(jié)構(gòu)特點(diǎn)的基礎(chǔ)上,介紹了利用FPGA實(shí)現(xiàn)旋轉(zhuǎn)開關(guān)信號到PC/AT鍵碼轉(zhuǎn)換的設(shè)計(jì)方法。
關(guān)鍵詞:接口電路,F(xiàn)PGA,鍵碼
在專用電路設(shè)計(jì)中,為了方便操作與控制,要對電路設(shè)計(jì)提出各種具體要求。本文即為一設(shè)計(jì)實(shí)例,其設(shè)計(jì)要求為:在旋轉(zhuǎn)開關(guān)的控制下,產(chǎn)生所需的PC/AT鍵碼控制信號,即當(dāng)旋轉(zhuǎn)開關(guān)左轉(zhuǎn)時(shí),每轉(zhuǎn)動(dòng)一個(gè)位置,產(chǎn)生一個(gè)左箭頭鍵碼和斷開碼(E0、6B、E0、F0、6B)信號,控制光標(biāo)左移一個(gè)位置;旋轉(zhuǎn)開關(guān)右轉(zhuǎn)時(shí),每轉(zhuǎn)動(dòng)一個(gè)位置,產(chǎn)生一個(gè)右箭頭鍵碼和斷開碼(E0、74、E0、F0、74)信號,控制光標(biāo)右移一個(gè)位置;當(dāng)按下一次旋轉(zhuǎn)開關(guān)的接通按鍵時(shí),產(chǎn)生一個(gè)回車鍵碼和斷開碼(50、F0、50)信號,控制光標(biāo)換行。為了實(shí)現(xiàn)這一設(shè)計(jì)要求,設(shè)計(jì)中采用Altera公司生產(chǎn)的可編程邏輯芯片EPM7128SLC,利用Maxplus2軟件完成設(shè)計(jì)任務(wù)。
1 基本概念
1.1 旋轉(zhuǎn)開關(guān)簡介
旋轉(zhuǎn)開關(guān)由A、B兩個(gè)通道開關(guān)、一個(gè)按壓通斷開關(guān)構(gòu)成,當(dāng)左右旋轉(zhuǎn)時(shí),A、B通道分別輸出具有90度相位差的控制信號;當(dāng)按下通斷開關(guān)時(shí),輸出一個(gè)通斷控制信號。旋轉(zhuǎn)開關(guān)的構(gòu)成及輸出波形如圖1所示。
1.2 PC/AT鍵碼特點(diǎn)
PC/AT鍵碼由接通碼與斷開碼構(gòu)成,當(dāng)鍵按下時(shí),產(chǎn)生相應(yīng)的PC/AT鍵碼,當(dāng)鍵釋放后,產(chǎn)生對應(yīng)的斷開碼,不同的按鍵對應(yīng)不同的鍵碼和斷開碼,如左箭頭的鍵碼為E0、6B,斷開碼E0、F0、6B;右箭頭的鍵碼為E0、74,斷開碼E0、F0、74;回車鍵的鍵碼為50,斷開碼為F0、50。每發(fā)送一個(gè)鍵碼包含11個(gè)數(shù)據(jù)位,即1個(gè)起始位、8個(gè)數(shù)據(jù)位(低位在前,高位在后)、1個(gè)奇偶校驗(yàn)位、1個(gè)停止位;在鍵碼傳送的同時(shí),還傳送一個(gè)與鍵碼同步的時(shí)鐘信號,用于同步鍵碼數(shù)據(jù)的接收;鍵碼中每個(gè)數(shù)據(jù)位的傳送發(fā)生在鍵碼時(shí)鐘的下降沿,時(shí)鐘的波特率為16Kbps左右。
1.3 EPM7128簡介
EPM7128是Altera公司生產(chǎn)的建立在多陣列結(jié)構(gòu)基礎(chǔ)上的高性能可編程邏輯器件,其內(nèi)部具有符合IEEE1149.1標(biāo)準(zhǔn)的JTAG接口用于在線下載和修改程序,其內(nèi)部具有2500個(gè)可使用門陣列、128個(gè)宏單元、8個(gè)邏輯陣列塊,EPM7128SLC84具有68個(gè)用戶可使用I/O接口。
2 軟件設(shè)計(jì)
為了利用FPGA將旋轉(zhuǎn)開關(guān)信號轉(zhuǎn)換成PC/AT鍵碼信號,所設(shè)計(jì)的FPGA軟件由時(shí)鐘發(fā)生器模塊(clk)、時(shí)鐘編碼模塊(pd_clk)、旋轉(zhuǎn)開關(guān)狀態(tài)識別模塊(pd identify)、輸出數(shù)據(jù)編碼控制模塊(pd_control)、碼器模塊(pd coder)、輸出模塊(pd out)構(gòu)成,其功能連接如圖2所示
時(shí)鐘發(fā)生器模塊的功能為:在reset信號的控制下,產(chǎn)生頻率為15.5kHz的時(shí)鐘信號,其振蕩源為由5個(gè)非門構(gòu)成的串聯(lián)環(huán)路,該振蕩器產(chǎn)生的振蕩信號經(jīng)分頻電路分頻,獲得所需頻率的振蕩信號clk。
時(shí)鐘編碼模塊的功能有兩個(gè),一是產(chǎn)生其它功能模塊所需的基準(zhǔn)控制信號clk/16;二是產(chǎn)生所需的PC/AT時(shí)鐘信號pd clk,如圖3所示。
旋轉(zhuǎn)開關(guān)狀態(tài)識別模塊的功能是正確地識別旋轉(zhuǎn)開關(guān)的狀態(tài),并產(chǎn)生相應(yīng)的控制信號;如果旋轉(zhuǎn)開關(guān)向左旋轉(zhuǎn)一個(gè)位置,則輸出一個(gè)Left turn識別信號;如果旋轉(zhuǎn)開關(guān)向右旋轉(zhuǎn)一個(gè)位置,則輸出一個(gè)識別信號;如果按壓一次旋轉(zhuǎn)開關(guān)上的接通開關(guān),則輸出一個(gè)Up/Down識別信號。
輸出編碼控制模塊和編碼器模塊的功能是在旋轉(zhuǎn)開關(guān)識別信號的控制下,產(chǎn)生相應(yīng)的輸出編碼控制信號,控制編碼器,使編碼器產(chǎn)生相應(yīng)的編碼信號;如果輸入一個(gè)Left turn識別信號,則依次輸出E0、6B、E0、F0、6B五個(gè)編碼信號;如果輸入一個(gè) 識別信號,則依次輸出E0、74、E0、F0、 74五個(gè)編碼信號;如果輸入一個(gè)Up/Down識別信號,則依次輸出50、F0、50三個(gè)編碼信號。
輸出模塊的功能是:根據(jù)輸入的編碼信號,確定校驗(yàn)位的值,如編碼信號中有奇數(shù)個(gè)1,則校驗(yàn)位為0,否則為1;根據(jù)輸入的編碼信號與生成的校驗(yàn)位,產(chǎn)生符合PC/AT鍵碼格式要求的鍵碼信號。
3 仿真結(jié)果
按照設(shè)計(jì)要求,利用Maxplus2軟件進(jìn)行功能設(shè)計(jì)與仿真,在完成模塊功能設(shè)計(jì)與各功能模塊仿真之后,進(jìn)行整體功能模塊連接與仿真,整體模塊連接如圖2所示,功能仿真結(jié)果如圖4所示。其中,reset信號為復(fù)位信號,A、B、ON/OFF信號為來自旋轉(zhuǎn)開關(guān)的輸出信號,所設(shè)計(jì)的
FPGA輸出的PC/AT鍵碼時(shí)鐘與數(shù)據(jù)信號分別為pd_clk和pd_data。
4 硬件結(jié)構(gòu)
所設(shè)計(jì)的FPGA程序,通過JTAG口與旋轉(zhuǎn)開關(guān)相連接的輸入接口、用于輸出PC/AT鍵碼和時(shí)鐘的輸出端口。
5 結(jié)束語
所設(shè)計(jì)的FPGA芯片可通過計(jì)算機(jī)鍵盤口進(jìn)行測試,當(dāng)左、右轉(zhuǎn)動(dòng)旋轉(zhuǎn)開關(guān)時(shí),控制顯示器上的光標(biāo)隨之左、右移動(dòng);當(dāng)按壓旋轉(zhuǎn)開關(guān)上的通斷按鍵時(shí),控制顯示器上的光標(biāo)換行。所設(shè)計(jì)的FPGA芯片已被實(shí)際工程項(xiàng)目應(yīng)用,實(shí)現(xiàn)了設(shè)計(jì)目的,滿足了要求。