在專用電路設(shè)計(jì)中,為了方便操作與控制,要對(duì)電路設(shè)計(jì)提出各種具體要求。本文即為一設(shè)計(jì)實(shí)例,其設(shè)計(jì)要求為:在旋轉(zhuǎn)開(kāi)關(guān)的控制下,產(chǎn)生所需的PC/AT鍵碼控制信號(hào),即當(dāng)旋轉(zhuǎn)開(kāi)關(guān)左轉(zhuǎn)時(shí),每轉(zhuǎn)動(dòng)一個(gè)位置,產(chǎn)生一個(gè)左箭頭鍵碼和斷開(kāi)碼(E0、6B、E0、F0、6B)信號(hào),控制光標(biāo)左移一個(gè)位置;旋轉(zhuǎn)開(kāi)關(guān)右轉(zhuǎn)時(shí),每轉(zhuǎn)動(dòng)一個(gè)位置,產(chǎn)生一個(gè)右箭頭鍵碼和斷開(kāi)碼(E0、74、E0、F0、74)信號(hào),控制光標(biāo)右移一個(gè)位置;當(dāng)按下一次旋轉(zhuǎn)開(kāi)關(guān)的接通按鍵時(shí),產(chǎn)生一個(gè)回車鍵碼和斷開(kāi)碼(50、F0、50)信號(hào),控制光標(biāo)換行。為了實(shí)現(xiàn)這一設(shè)計(jì)要求,設(shè)計(jì)中采用Altera公司生產(chǎn)的可編程邏輯芯片EPM7128SLC,利用Maxplus2軟件完成設(shè)計(jì)任務(wù)。
1基本概念
1.1旋轉(zhuǎn)開(kāi)關(guān)簡(jiǎn)介
旋轉(zhuǎn)開(kāi)關(guān)由A、B兩個(gè)通道開(kāi)關(guān)、一個(gè)按壓通斷開(kāi)關(guān)構(gòu)成,當(dāng)左右旋轉(zhuǎn)時(shí),A、B通道分別輸出具有90度相位差的控制信號(hào);當(dāng)按下通斷開(kāi)關(guān)時(shí),輸出一個(gè)通斷控制信號(hào)。旋轉(zhuǎn)開(kāi)關(guān)的構(gòu)成及輸出波形如圖1所示。
1.2PC/AT鍵碼特點(diǎn)
PC/AT鍵碼由接通碼與斷開(kāi)碼構(gòu)成,當(dāng)鍵按下時(shí),產(chǎn)生相應(yīng)的PC/AT鍵碼,當(dāng)鍵釋放后,產(chǎn)生對(duì)應(yīng)的斷開(kāi)碼,不同的按鍵對(duì)應(yīng)不同的鍵碼和斷開(kāi)碼,如左箭頭的鍵碼為E0、6B,斷開(kāi)碼E0、F0、6B;右箭頭的鍵碼為E0、74,斷開(kāi)碼E0、F0、74;回車鍵的鍵碼為50,斷開(kāi)碼為F0、50。每發(fā)送一個(gè)鍵碼包含11個(gè)數(shù)據(jù)位,即1個(gè)起始位、8個(gè)數(shù)據(jù)位(低位在前,高位在后)、1個(gè)奇偶校驗(yàn)位、1個(gè)停止位;在鍵碼傳送的同時(shí),還傳送一個(gè)與鍵碼同步的時(shí)鐘信號(hào),用于同步鍵碼數(shù)據(jù)的接收;鍵碼中每個(gè)數(shù)據(jù)位的傳送發(fā)生在鍵碼時(shí)鐘的下降沿,時(shí)鐘的波特率為16Kbps左右。
1.3EPM7128簡(jiǎn)介
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)開(kāi)關(guān)信號(hào)轉(zhuǎn)換成PC/AT鍵碼信號(hào),所設(shè)計(jì)的FPGA軟件由時(shí)鐘發(fā)生器模塊(clk)、時(shí)鐘編碼模塊(pd_clk)、旋轉(zhuǎn)開(kāi)關(guān)狀態(tài)識(shí)別模塊(pdidentify)、輸出數(shù)據(jù)編碼控制模塊(pd_control)、碼器模塊(pdcoder)、輸出模塊(pdout)構(gòu)成,其功能連接如圖2所示
時(shí)鐘發(fā)生器模塊的功能為:在reset信號(hào)的控制下,產(chǎn)生頻率為15.5kHz的時(shí)鐘信號(hào),其振蕩源為由5個(gè)非門構(gòu)成的串聯(lián)環(huán)路,該振蕩器產(chǎn)生的振蕩信號(hào)經(jīng)分頻電路分頻,獲得所需頻率的振蕩信號(hào)clk。
時(shí)鐘編碼模塊的功能有兩個(gè),一是產(chǎn)生其它功能模塊所需的基準(zhǔn)控制信號(hào)clk/16;二是產(chǎn)生所需的PC/AT時(shí)鐘信號(hào)pdclk,如圖3所示。
旋轉(zhuǎn)開(kāi)關(guān)狀態(tài)識(shí)別模塊的功能是正確地識(shí)別旋轉(zhuǎn)開(kāi)關(guān)的狀態(tài),并產(chǎn)生相應(yīng)的控制信號(hào);如果旋轉(zhuǎn)開(kāi)關(guān)向左旋轉(zhuǎn)一個(gè)位置,則輸出一個(gè)Leftturn識(shí)別信號(hào);如果旋轉(zhuǎn)開(kāi)關(guān)向右旋轉(zhuǎn)一個(gè)位置,則輸出一個(gè)識(shí)別信號(hào);如果按壓一次旋轉(zhuǎn)開(kāi)關(guān)上的接通開(kāi)關(guān),則輸出一個(gè)Up/Down識(shí)別信號(hào)。
輸出編碼控制模塊和編碼器模塊的功能是在旋轉(zhuǎn)開(kāi)關(guān)識(shí)別信號(hào)的控制下,產(chǎn)生相應(yīng)的輸出編碼控制信號(hào),控制編碼器,使編碼器產(chǎn)生相應(yīng)的編碼信號(hào);如果輸入一個(gè)Leftturn識(shí)別信號(hào),則依次輸出E0、6B、E0、F0、6B五個(gè)編碼信號(hào);如果輸入一個(gè)識(shí)別信號(hào),則依次輸出E0、74、E0、F0、 74五個(gè)編碼信號(hào);如果輸入一個(gè)Up/Down識(shí)別信號(hào),則依次輸出50、F0、50三個(gè)編碼信號(hào)。
輸出模塊的功能是:根據(jù)輸入的編碼信號(hào),確定校驗(yàn)位的值,如編碼信號(hào)中有奇數(shù)個(gè)1,則校驗(yàn)位為0,否則為1;根據(jù)輸入的編碼信號(hào)與生成的校驗(yàn)位,產(chǎn)生符合PC/AT鍵碼格式要求的鍵碼信號(hào)。
3仿真結(jié)果
按照設(shè)計(jì)要求,利用Maxplus2軟件進(jìn)行功能設(shè)計(jì)與仿真,在完成模塊功能設(shè)計(jì)與各功能模塊仿真之后,進(jìn)行整體功能模塊連接與仿真,整體模塊連接如圖2所示,功能仿真結(jié)果如圖4所示。其中,reset信號(hào)為復(fù)位信號(hào),A、B、ON/OFF信號(hào)為來(lái)自旋轉(zhuǎn)開(kāi)關(guān)的輸出信號(hào),所設(shè)計(jì)的FPGA輸出的PC/AT鍵碼時(shí)鐘與數(shù)據(jù)信號(hào)分別為pd_clk和pd_data。
4硬件結(jié)構(gòu)
所設(shè)計(jì)的FPGA程序,通過(guò)JTAG口與旋轉(zhuǎn)開(kāi)關(guān)相連接的輸入接口、用于輸出PC/AT鍵碼和時(shí)鐘的輸出端口。
5結(jié)束語(yǔ)
所設(shè)計(jì)的FPGA芯片可通過(guò)計(jì)算機(jī)鍵盤口進(jìn)行測(cè)試,當(dāng)左、右轉(zhuǎn)動(dòng)旋轉(zhuǎn)開(kāi)關(guān)時(shí),控制顯示器上的光標(biāo)隨之左、右移動(dòng);當(dāng)按壓旋轉(zhuǎn)開(kāi)關(guān)上的通斷按鍵時(shí),控制顯示器上的光標(biāo)換行。所設(shè)計(jì)的FPGA芯片已被實(shí)際工程項(xiàng)目應(yīng)用,實(shí)現(xiàn)了設(shè)計(jì)目的,滿足了要求。
-
FPGA
+關(guān)注
關(guān)注
1626文章
21671瀏覽量
601886 -
接口
+關(guān)注
關(guān)注
33文章
8504瀏覽量
150840
原文標(biāo)題:一種基于FPGA的接口電路設(shè)計(jì)
文章出處:【微信號(hào):FPGAer_Club,微信公眾號(hào):FPGAer俱樂(lè)部】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論