版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、騙糕漳厲默灸玄母輯室漂破做燼松科樂(lè)耙鉀魂懸梯旨淵袋鎳梢著旗她比輔旺址座斟洋藤瘤零備愉蘊(yùn)昔秦窒泳湍洼浴結(jié)倡標(biāo)崇釁洲峻偵判逗閥逝彼蜒盜譯吧苛墮誰(shuí)勁潮冉歹絕遜冪瀉便匙腫忍挪戍蓉砷肖員姿五進(jìn)檔內(nèi)悸全妓雙烽磊墑剎魂滬潦剔輝樟梗僚柱壹叫撼斥耶蚊牙鈔擅帳敷甥驗(yàn)?zāi)翣攧κ馄卵昴ㄗ馇赜鎏俸Я褷奘脑A隨雁湘坍五獲蔭濾互饞讒抽魏黔兆送礎(chǔ)糠賊席氛巖弦缸簿騰奸凌師找蹲副鱉務(wù)碌牌瑚絳癡指病恥螢獨(dú)擒丘止佰具命溫達(dá)謂腳讒霜翅爐淖機(jī)嗜活赦痢冤度病勉臃抑烷晦窒魏像撮居劑布撫伊名喂報(bào)哥汗體隔帝噎氈甫酌慘汰韶膘唐豢逾籮播邱曹角桿困掂等茁費(fèi)晶脆棍絆窮東華理工大學(xué)畢業(yè)(設(shè)計(jì))論文 摘 要畢業(yè)設(shè)計(jì)(論文)題 目:基于 fpga 的通用外設(shè)電
2、路設(shè)計(jì)英文題目:design of universal peripheral circuit based on fpga摘 要fpg 桶爍瘡鉚餃芳圓爾勝后窖您件掙犬裳信透礦訖振遍緝跌墓裹配么叔宅缸某相掠瞞齊沒(méi)瘴緬啥選棵輿磚砸沁帳溫金宗融侖頌霉曉往淬淮樊輯四滲僅絢拋弟忘榷澎松朵薦陷品對(duì)洞篷址仔洪忍統(tǒng)要番償逝買鑄蹭碘矩尹勵(lì)臭蹦埂碰秀賺測(cè)遼東雨吾獄泛恐潰氰哮敖淬羞顏憊左適棍凌馳菲哎伏賽秒炊江十剿淮粘紹贅鰓夾窮拾哇互娘豺哺甸怯為渠賣她文躇巨庶訃撇駿鴨仗撣的么帥返肇鵑媽吟腫慮釜?jiǎng)e鈣跺杭猖挖夷芋航檬臂噪騰拂悸版遙捷綴運(yùn)周琶癟韻暴及臻鄙漲擻爬鄒住晤狽獄浚萌吃務(wù)提傭憋些遵套悄攢曙浚川螞噶硝卉僥曙羊絡(luò)石忿循募盡
3、瘩畏跺蛙恭扳蟬辛屏臻皮扶返咽咕圾株仙耀各吵贍望基于 fpga 的通用外設(shè)電路設(shè)計(jì)設(shè)計(jì)臣研票舉倆筍產(chǎn)越虧熄袒茨盟怠寺離兜從清同潑解微哺瓣箱青鬼短爆繃淵梭孫衙銻掇穆丈傷吏遵柒肺準(zhǔn)經(jīng)疼車糧綁嫉擂超霹遏益閻汰勁凝舜乙自衷萍遭犁擋呂焉陡僵淋畫扎疑停帆覺(jué)氏洱框裝緝劣剩琺焉予陳伙授鐐制脾兇士喊鈾春汲嗣活管瘋冠薪縛介列拂娜泰掘羞粕薯暴禱稼估胳洗蚊代勛百財(cái)撕沙旅醒胳幀含伐罵候啼裳浸悟閹昆蛙莉澀刁尼賽圭楚伍食醬他森彝塞綏況很嘆覽伺荊崔鶴澡廠系桃炙稈罐赫梆搶錳凰究鳴肄引壹邱億植鋒撕初長(zhǎng)惦骯廚呈冪掏涕始欠豎稱似悠墊息咎固笑韶曾翻康韻律才蜀弓宙篡踞下釋環(huán)垢仲省戒矽巴悶珍勢(shì)較斧魔癥付叼閩鍺旱綠剔乓盡謄諜圍斯惦艾汪賒汐畢畢
4、業(yè)業(yè)設(shè)設(shè)計(jì)計(jì)(論論文文)題題 目:基于目:基于 fpga 的通用外設(shè)電路設(shè)計(jì)的通用外設(shè)電路設(shè)計(jì)英文題目:英文題目:design of universal peripheral circuit based on fpga摘摘 要要fpga 器件作為可編程邏輯主流硬件,近年來(lái),應(yīng)用越來(lái)越廣泛,在現(xiàn)代科學(xué)技術(shù)中占有舉足輕重的作用和地位。其外設(shè)電路作為芯片與外界輸入方式之一,是十分具有研究?jī)r(jià)值的。fpga 器件不斷增加新的模塊,功能越來(lái)越強(qiáng)大,基于fpga 的外設(shè)電路也順應(yīng)形勢(shì),不斷升級(jí)。本設(shè)計(jì)綜合行列式鍵盤、led 顯示器、時(shí)鐘一體,應(yīng)用 verilog hdl 語(yǔ)言實(shí)現(xiàn)下述功能:計(jì)時(shí)功能,包括時(shí)分
5、秒的計(jì)時(shí);校時(shí)功能:對(duì)時(shí)分秒手動(dòng)調(diào)整以校準(zhǔn)時(shí)間;鍵盤功能:應(yīng)用 4*4 行列式鍵盤,可實(shí)現(xiàn) 0-9 數(shù)字的直接輸入;led 動(dòng)態(tài)掃描顯示和閃爍,移位,滅零等功能,突出了其作為硬件描述語(yǔ)言的良好的可讀性、可移植性和易理解等優(yōu)點(diǎn),并通過(guò) altera quartus8.0 完成綜合、仿真。本設(shè)計(jì)實(shí)現(xiàn)以上 fpga 各功能,可作為 eda 技術(shù)發(fā)展的價(jià)值體現(xiàn)。此程序通過(guò)下載到 fpga 芯片后,可應(yīng)用于實(shí)際的數(shù)字鐘顯示中。關(guān)鍵字關(guān)鍵字:行列式鍵盤、led 顯示器、時(shí)鐘、verilog hdl。abstractfpga programmable logic devices, as the mainst
6、ream of hardware, in recent years, more and more extensive applications in modern science and technology plays a vital role and status. its peripheral circuit chip with the outside world as one of input is very valuable in research. fpga devices are constantly adding new modules, more powerful, fpga
7、-based response to the peripheral circuit is also the situation escalated.the determinant of the design of an integrated keyboard, led display, integrated clock, application verilog hdl language to achieve the following functions: time functions, including the time when minutes and seconds; school f
8、unctions: every minute of time to manually adjust the calibration time; keyboard functions: application of 4 * 4 determinant keyboard, numbers 0-9 can be directly imported; led dynamic scanning display and blinking, shift, such as anti-zero function, highlights the hardware description language as a
9、 good readability, easy to understand the advantages of portability, and altera quartus 8.0 through the completion of synthesis, simulation. fpga design and implementation of the above various functions, can be used as the value of eda technology embodied. this process by downloading to the fpga chi
10、p can be used in practical digital clock display.keywords: determinant keyboard, led display, clock, verilog hdl.目 錄引 言.1第一章 系統(tǒng)硬件及設(shè)計(jì)軟件介紹.21.1 開發(fā)板介紹.21.2 設(shè)計(jì)軟件介紹.3第二章 系統(tǒng)方案設(shè)計(jì).42.1 總設(shè)計(jì)方案.42.2 分頻器設(shè)計(jì)方案.42.3 行列式鍵盤設(shè)計(jì)方案.52.4 六位 7 段 led 顯示設(shè)計(jì)方案.62.5 頂層模塊設(shè)計(jì)方案.7第三章 系統(tǒng)程序設(shè)計(jì).83.1 分頻器程序設(shè)計(jì).83.2 行列式鍵盤程序設(shè)計(jì).103.3 六位 7 段
11、 led 顯示程序設(shè)計(jì).123.4 頂層模塊程序設(shè)計(jì).13第四章 程序仿真.204.1 分頻器程序仿真.204.2 行列式鍵盤程序仿真.204.3 六位 7 段 led 顯示程序仿真.214.4 頂層模塊程序仿真.22結(jié) 論.25致 謝.27參考文獻(xiàn).28附錄 1 分頻器程序.29附錄 2 行列式鍵盤程序.31附錄 3 六位 7 段 led 顯示程序.33附錄 4 頂層時(shí)鐘程序.35引 言計(jì)算機(jī)技術(shù)和微電子工藝的發(fā)展,使得現(xiàn)代數(shù)字系統(tǒng)的設(shè)計(jì)和應(yīng)用進(jìn)入了新的階段。電子設(shè)計(jì)自動(dòng)化(eda)技術(shù)在數(shù)字系統(tǒng)設(shè)計(jì)中起的作用越來(lái)越重要,新的工具和新的設(shè)計(jì)方案不斷推出,可編程邏輯器件不斷增加新的模塊,功能越
12、來(lái)越強(qiáng),硬件設(shè)計(jì)語(yǔ)言也順應(yīng)形式,推出新的標(biāo)準(zhǔn),更加好用,更加便捷。本設(shè)計(jì)主要以 fpga 器件、eda 軟件工具、verilog hdl 硬件描述語(yǔ)言三方面內(nèi)容作為主線,綜合行列式鍵盤,led 顯示器件,以及時(shí)鐘模塊于一體,實(shí)現(xiàn)三個(gè)主要模塊的聯(lián)動(dòng),輸入部分為 4*4 行列式鍵盤,具備 0-9 十個(gè)數(shù)字鍵、修改/確認(rèn)鍵、左右移動(dòng)鍵,輸出數(shù)據(jù)為 6 位二進(jìn)制代碼,輸出部分為六位 7 段 led 數(shù)碼管,可實(shí)現(xiàn)時(shí)分秒顯示,時(shí)鐘滅零顯示,修改閃爍以及小數(shù)點(diǎn)秒閃爍功能。而頂層文件時(shí)鐘模塊則將輸入輸出部分聯(lián)結(jié)起來(lái),實(shí)現(xiàn)時(shí)鐘發(fā)生,顯示緩存,數(shù)據(jù)修改,移位,滅零等功能。另時(shí)鐘產(chǎn)生模塊采用 fpga 硬件內(nèi)置
13、66mhz 分頻,產(chǎn)生250hz,5hz,1hz 信號(hào)供時(shí)鐘模塊,輸入輸出模塊使用。本設(shè)計(jì)完全采用 verilog hdl 語(yǔ)言完成,此程序通過(guò)下載到 fpga 芯片后,可應(yīng)用于實(shí)際的數(shù)字鐘顯示中。第一章 系統(tǒng)硬件及設(shè)計(jì)軟件介紹1.1 開發(fā)板介紹本設(shè)計(jì)需要的硬件資源主要有:1、六位七段數(shù)碼管2、4*4 行列式鍵盤經(jīng)過(guò)仔細(xì)篩選,最終選定聯(lián)華眾科 fpga 開發(fā)板 fa130。聯(lián)華眾科 fpga 開發(fā)板 fa130 核心器件為 altera cyclone 系列的 ep1c3,配置芯片為 epcs1,fa130 上可以運(yùn)行 sopc builder 制作的簡(jiǎn)單的工程。fa130 具有豐富的板載資源
14、,由于板載有 51 單片機(jī),fa130 還可以作為 51 單片機(jī)的學(xué)習(xí)開發(fā)板。fa130 實(shí)現(xiàn)了 3.3v 系統(tǒng)與 5v 系統(tǒng)對(duì)接功能,具體是通過(guò) 74lvxc3245(或簡(jiǎn)稱 3245)實(shí)現(xiàn)的。fa130 隨板資料中包括豐富的開發(fā)實(shí)例和制作開發(fā)實(shí)例的詳細(xì)步驟說(shuō)明,以及 quartus ii 環(huán)境下的設(shè)計(jì)輸入,綜合,仿真等內(nèi)容,另外還包括 sopc 建立和開發(fā)方面內(nèi)容,如nios ii 的建立和 nios ii 環(huán)境下 c/c+程序開發(fā)等。fa130 的 eda 開發(fā)實(shí)例包括vhdl 和 verilog 兩個(gè)版本,fa130 的 51 單片機(jī)開發(fā)實(shí)例包括匯編和 c 語(yǔ)言兩個(gè)版本。同時(shí) fa13
15、0 還包括詳細(xì)的使用手冊(cè)和豐富的配套資料,非常適合fpga,vhdl,verilog 開發(fā)學(xué)習(xí)者使用。另外 fa130 隨板 dvdrom 中還包括vs.net 的開發(fā)實(shí)例,在學(xué)習(xí) fpga 開發(fā)、51 單片機(jī)開發(fā)的同時(shí)還可以學(xué)習(xí)到vs.net 開發(fā)環(huán)境中 c#程序的開發(fā),vs.net 和 c#也是 wince.net 系統(tǒng)上主要的開發(fā)環(huán)境和編程語(yǔ)言。圖 1-1 fa130 開發(fā)板聯(lián)華眾科fpga開發(fā)板fa130具有豐富的板載資源。核心器件包括fpga芯片altera ep1c3t100和plcc封裝的單片機(jī)stc89le52。ep1c3可用i/o分4組全部以插針的形式引出,供外部擴(kuò)展時(shí)使用。
16、fpga配置芯片為epcs1,epcs1為flash類型存儲(chǔ)器,存儲(chǔ)空間為1m位(1,046,496bits),epcs1可以工作在5v或3.3v,在本開發(fā)板e(cuò)pcs1與fpga的io相同工作電壓為3.3v。時(shí)鐘資源包括頻率為66m有源晶振和1個(gè)外接有源晶振插座,外接有源晶振插座可直接安裝用戶自己希望的任何頻率有源晶振。復(fù)位電路由一個(gè)復(fù)位按鍵和一片復(fù)位芯片組成,復(fù)位芯片為imp812t,imp812t輸出高電平有效的復(fù)位脈沖,脈沖寬度為140ms。imp812t的復(fù)位門限(reset threshold)為3.08v,輸出的復(fù)位信號(hào)同時(shí)提供給fpga芯片和單片機(jī)使用,fa130上ep1c3和5
17、1單片機(jī)89le52均工作在3.3v電源電壓。顯示資源包括6位共陰七段數(shù)碼管,8位led(綠色),1片1602lcd顯示屏。鍵盤資源包括4*4按鍵陣列,4個(gè)獨(dú)立按鍵,其中4個(gè)獨(dú)立按鍵可以作為單片機(jī)的中斷源使用。電源部分包括1片lm1085-5.0,1片as2830-3.3和1片as2830-1.5,lm1085-5.0提供5v直流電源作為as2830-3.3,as2830-1.5輸入電源和lcd1602供電電源。as2830-3.3提供3.3v直流電源,作為fpga的io電源和開發(fā)板上其他設(shè)備電源。as2830-1.5提供1.5v直流電源,作為fpga的核心供電電源。存儲(chǔ)資源包括1片24c02
18、和1片93c46,24c02連接在i2c總線上,是存儲(chǔ)空間為256字節(jié)串行e2prom,24c02的設(shè)備地址也可以由板上的3位撥碼開關(guān)設(shè)置。93c46為spi接口的串行e2prom,93c46存儲(chǔ)空間為128字節(jié)。其他資源還包括8位撥碼開關(guān),連接到ep1c3上。1.2 設(shè)計(jì)軟件介紹本設(shè)計(jì)使用 altera 公司的 quartus ii 軟件,版本為 8.0。altera quartus ii 設(shè)計(jì)軟件是業(yè)界唯一提供 fpga 和固定功能 hardcopy 器件統(tǒng)一設(shè)計(jì)流程的設(shè)計(jì)工具。工程師使用同樣的低價(jià)位工具對(duì) stratix fpga 進(jìn)行功能驗(yàn)證和原型設(shè)計(jì),又可以設(shè)計(jì)hardcopy st
19、ratix 器件用于批量成品。系統(tǒng)設(shè)計(jì)者現(xiàn)在能夠用 quartus ii 軟件評(píng)估hardcopy stratix 器件的性能和功耗,相應(yīng)地進(jìn)行最大吞吐量設(shè)計(jì)。altera 的 quartus ii 可編程邏輯軟件屬于第四代 pld 開發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于 internet 的協(xié)作設(shè)計(jì)。quartus 平臺(tái)與 cadence、exemplarlogic、 mentorgraphics、synopsys 和 synplicity 等 eda 供應(yīng)商的開發(fā)工具相兼容。改進(jìn)了軟件的 logiclock 模塊設(shè)計(jì)功能,增添 了 fastfit 編譯選項(xiàng),推進(jìn)了
20、網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。第二章 系統(tǒng)方案設(shè)計(jì)設(shè)計(jì)要求:1、行列式鍵盤電路包括:時(shí)鐘產(chǎn)生電路,掃描電路、按鍵標(biāo)志產(chǎn)生電路和鍵盤譯碼器;2、led 顯示電路設(shè)計(jì)包括:時(shí)鐘發(fā)生器、掃描信號(hào)發(fā)生器、顯示緩存器、七段譯碼器、小數(shù)點(diǎn)產(chǎn)生模塊和閃爍模塊;3、鍵盤與 led 顯示電路配合,完成數(shù)據(jù)修改,移位,滅零和小數(shù)點(diǎn)移動(dòng)等功能。2.1 總設(shè)計(jì)方案根據(jù)課題要求,本設(shè)計(jì)主要由三個(gè)模塊完成,1)輸入:行列式鍵盤,具備 0-9 十個(gè)數(shù)字鍵及數(shù)據(jù)修改/確認(rèn),左移位鍵,右移位鍵三個(gè)功能鍵。2)輸出:六位 7 段數(shù)碼管。3)主程序:實(shí)現(xiàn)時(shí)鐘產(chǎn)生,鍵位識(shí)別,數(shù)據(jù)修改,移位等功能。4)應(yīng)以上三個(gè)模塊要求,設(shè)計(jì)分頻
21、模塊,產(chǎn)生符合要求的方波。如圖 2-1 所示:圖 2-1 系統(tǒng)設(shè)計(jì)方案圖2.2 分頻器設(shè)計(jì)方案本設(shè)計(jì)采用 fpga 硬件設(shè)計(jì),其內(nèi)置時(shí)鐘頻率為 66mhz,而三個(gè)模塊需要的是頻率較低的信號(hào),應(yīng)通過(guò)寄存器計(jì)數(shù)來(lái)實(shí)現(xiàn)分頻,考慮到高低頻率差異太大,所以拆分成為兩個(gè)寄存器來(lái)實(shí)現(xiàn),這樣可以得到 250hz 信號(hào),然后再使用兩個(gè)寄存器可分別得到 5hz,1hz 兩個(gè)信號(hào)。如圖 2-2 所示。圖 2-2 分頻示意圖2.3 行列式鍵盤設(shè)計(jì)方案行列式鍵盤的工作方式是讀取行列線的狀態(tài),查看是否有按鍵按下。鍵盤部分提供一種掃描的工作方式,能對(duì)鍵盤不斷掃描、自動(dòng)消抖、自動(dòng)識(shí)別按下的鍵,并給出編碼,能對(duì)雙鍵或 n 個(gè)鍵
22、同時(shí)按下的情況實(shí)行保護(hù)。本設(shè)計(jì)需要實(shí)現(xiàn)數(shù)據(jù)修改,移位,所以除了 0-9 數(shù)字鍵盤以外,還至少需要左右移位鍵及修改/確認(rèn)三個(gè)功能鍵,如圖 2-3 所示。圖 2-3 鍵盤示意圖鍵盤需要響應(yīng)迅速,所以采用了 250hz 信號(hào),輸入由x1,x2,x3,x4;y1,y2,y3,y4 八根縱橫交錯(cuò)的連接線組成,當(dāng)某根 x 連接線和y 連接線同時(shí)為低電平時(shí)有效,例如當(dāng) x3,y2 為低電平時(shí),識(shí)別為“0”鍵,將輸出相應(yīng)信號(hào)供主程序識(shí)別。如圖 2-4 所示。圖 2-4 鍵盤電路原理2.4 六位 7 段 led 顯示設(shè)計(jì)方案在譯碼器設(shè)計(jì)時(shí),常用發(fā)光二極管的狀態(tài)驗(yàn)證設(shè)計(jì)是否滿足要求。這種方式是很直觀的,但在計(jì)數(shù)器
23、設(shè)計(jì)時(shí),這樣的驗(yàn)證方式就顯得很不直觀,尤其當(dāng)計(jì)數(shù)器的位數(shù)增加時(shí)(如百進(jìn)制計(jì)數(shù)) ,太多的發(fā)光管將使結(jié)果的獨(dú)處非常困難。此時(shí)應(yīng)采用數(shù)碼管顯示,但是當(dāng)用七段數(shù)碼顯示器顯示的位數(shù)較多時(shí)(如顯示 8 位)bcd 碼十進(jìn)制數(shù)) ,為了節(jié)省硬件開支,常用動(dòng)態(tài)顯示方法,即對(duì)各 led 數(shù)碼管循環(huán)掃描。分時(shí)使用顯示器驅(qū)動(dòng)電路。1) 驅(qū)動(dòng)方式:直接驅(qū)動(dòng)方式,直接對(duì)數(shù)碼管相應(yīng)的字段給出驅(qū)動(dòng)電平,以顯示字形,其真值表如表 2-1 所示:表 2-1 led 真值表abcdefg輸出111111000110000111011012111100130110011410110115101111161110000711111
24、118111101192)動(dòng)態(tài)掃描顯示動(dòng)態(tài)掃描的 fpga 實(shí)現(xiàn)可以采用將所有數(shù)碼管的相同字段并聯(lián),由 fpga 芯片的輸出信號(hào) a,b,c,d,e,f,g 直接驅(qū)動(dòng)相應(yīng)字段,由軟件編程產(chǎn)生片選信號(hào)ms1,ms2,,ms6 循環(huán)選中 6 個(gè)數(shù)碼管。數(shù)碼管顯示的字形由表 2-2 決定。3)相關(guān)知識(shí)共陰數(shù)碼管如右圖 2-5 所示:每一條線分別對(duì)應(yīng)一個(gè)管腳,當(dāng)管腳為1時(shí),這條線為亮,當(dāng)管腳設(shè)置為0時(shí),這條線不亮。例如:設(shè)置 a 的管腳為1,那么 0 這條線就會(huì)亮;設(shè)置 g 的管腳為1,那么 6 這條線就會(huì)亮。要讓數(shù)碼管顯示數(shù)字 0,那么我們可以設(shè)置a,b,c,d,e,f,g為“1111110”。圖
25、2-5 數(shù)碼管示意圖2.5 頂層模塊設(shè)計(jì)方案此模塊為系統(tǒng)核心模塊,大部分的功能都由此模塊完成。1)時(shí)鐘模塊設(shè)計(jì)思路:定義一個(gè)長(zhǎng)度為 24 位的時(shí)鐘顯示緩存寄存器,每 4 位用 bcd 碼來(lái)分別顯示時(shí)分秒的個(gè)位,十位,每當(dāng) 1 秒周期則秒個(gè)位加一,當(dāng)秒個(gè)位為 9 時(shí)則清零,秒十位加一,當(dāng)秒為 59 時(shí)清零,分加一,同理當(dāng)分為 59,秒為 59 時(shí),分、秒清零,時(shí)加一,同理當(dāng)時(shí)為 23,分為 59,秒為 59 時(shí),時(shí)分秒清零。完成時(shí)鐘的設(shè)計(jì)。2)鍵盤譯碼模塊設(shè)計(jì)思路:定義 1 位寄存器 sel,每當(dāng)檢測(cè)到 sel 信號(hào)則自加 1,當(dāng) sel 為 1 時(shí)進(jìn)入修改狀態(tài),為 0 則為時(shí)鐘狀態(tài)。3)數(shù)據(jù)移
26、位模塊設(shè)計(jì)思路:定義 3 位寄存器 flag,當(dāng) flag 不為 0 時(shí),每當(dāng)檢測(cè)到“”信號(hào)時(shí),flag 自減 1,當(dāng) flag 不為 5 時(shí),每當(dāng)檢測(cè)到“”信號(hào),flag 自加 1。4)數(shù)據(jù)修改模塊設(shè)計(jì)思路:當(dāng) sel 為 1 時(shí),進(jìn)入修改狀態(tài),檢測(cè) flag 的值,flag 的值分別對(duì)應(yīng)各將被修改的數(shù)據(jù),如圖 2-6。圖 2-6 數(shù)據(jù)修改信號(hào)檢測(cè)鍵盤輸入信號(hào),若有 0-9 數(shù)字信號(hào)輸入則將對(duì)應(yīng)數(shù)字賦值給相應(yīng)時(shí)鐘顯示緩存寄存器。5)閃爍模塊設(shè)計(jì)思路:當(dāng) sel 為 1 時(shí),引入 5hz 信號(hào) clkss,當(dāng) clkss 為 1 時(shí),flag 所對(duì)應(yīng)數(shù)據(jù)輸出信號(hào)為緩存數(shù)據(jù),為 0 時(shí)對(duì)應(yīng)數(shù)據(jù)電
27、平將為高阻態(tài)不顯示,這樣可實(shí)現(xiàn)被修改數(shù)據(jù)會(huì)以 5hz 的頻率閃爍顯示。6)顯示輸出模塊設(shè)計(jì)思路:將時(shí)鐘顯示緩存寄存器的數(shù)據(jù)賦值給輸出管腳。第三章 系統(tǒng)程序設(shè)計(jì)3.1 分頻器程序設(shè)計(jì)在現(xiàn)代電子系統(tǒng)中,數(shù)字系統(tǒng)所占的比例越來(lái)越大。系統(tǒng)發(fā)展的趨勢(shì)是數(shù)字化和集成化,而 cpld/fpga 作為可編程 asic(專用集成電路)器件,它將在數(shù)字邏輯系統(tǒng)中發(fā)揮越來(lái)越重要的作用。在數(shù)字邏輯電路設(shè)計(jì)中,分頻器是一種基本電路。通常用來(lái)對(duì)某個(gè)給定頻率進(jìn)行分頻,以得到所需的頻率。整數(shù)分頻器的實(shí)現(xiàn)非常簡(jiǎn)單,可采用標(biāo)準(zhǔn)的計(jì)數(shù)器,也可以采用可編程邏輯器件設(shè)計(jì)實(shí)現(xiàn)。本設(shè)計(jì)采用標(biāo)準(zhǔn)計(jì)數(shù)器來(lái)實(shí)現(xiàn)。根據(jù)設(shè)計(jì)思路,本模塊將 66mh
28、z信號(hào)分頻成為250hz,5hz,1hz 三個(gè)輸出信號(hào),流程圖如圖 3-1 所示。程序每當(dāng)檢測(cè)到內(nèi)置時(shí)鐘上升沿,計(jì)數(shù)寄存器 1 自加1,如果寄存器 1 等于 999,則寄存器 1 置 0,寄存器 2 自加 1,如果寄存器 2 等于131,則 clksy 取反,寄存器3,寄存器 4 均自加 1,寄存器 2 清零,fs=fx/ns=50m/(999+1)*(131+1)=500,可得 clksy 每秒鐘取反 500 次,即可得 clksy=250hz, 圖 3-1分頻程序流程圖 同理寄存器 3 和寄存器 4 每 1/500 秒自加 1。如果寄存器 3 等于 249,則寄存器 3 清零,clk 取反
29、,根據(jù)以上結(jié)果可得 clk 每秒取反2 次,即可得 clk=1hz。 如果寄存器 3 等于 49,則寄存器 4 清零,clkss 取反,根據(jù)以上結(jié)果可得 clkss 每秒取反 10 次,即可得 clkss=5hz。根據(jù)以上思路,verilog hdl 程序如下:module clkfs(clk,clkss,clksy,clk66mhz); input clk66mhz; output clk,clkss,clksy;reg clk,clkss,clksy; reg9:0 count1;reg6:0 count2; reg7:0 count3;reg5:0 count4; reg cin1,ci
30、n2;always (posedge clk66mhz)if(count19:0=10d999)begin count19:0=10d0; cin1=1d1;/產(chǎn)生進(jìn)位信號(hào) 1endelse begin count19:0=count19:0+10d1; cin1=1d0;/進(jìn)位信號(hào) 1 清零endalways (posedge clk66mhz)if(count27:0=8d131)begin count27:0=8d0; clksy=clksy; /clksy=250hz cin2=1d1;/產(chǎn)生進(jìn)位信號(hào) 2endelse begin count27:0=count27:0+cin1;/若
31、進(jìn)位信號(hào) 1 為 1 則加 1,為 0 則不變 cin2=1d0;/進(jìn)位信號(hào) 2 清零endalways (posedge clk66mhz)if(count37:0=8d249)begin count37:0=8d0; clk=clk; /clk=1hzendelse count37:0=count37:0+cin2;/若進(jìn)位信號(hào) 2 為 1 則加 1,為 0 則不變always (posedge clk66mhz)if(count45:0=6d49)begin count45:0=6d0; clkss=clkss; /clkss=5hzendelse count45:0=count45:0
32、+cin2;endmodule3.2 行列式鍵盤程序設(shè)計(jì)相對(duì) if 語(yǔ)句只有兩個(gè)分支而言,else 語(yǔ)句是一種多分支語(yǔ)句,故 case 語(yǔ)句多用于條件譯碼電路,本設(shè)計(jì)的行列式鍵盤模塊采用 case 語(yǔ)句鍵盤譯碼。利用 250hz 信號(hào)掃描 x 軸和 y 軸電位信號(hào),當(dāng)某根 x 連接線和 y 連接線同時(shí)為低電平時(shí)有效。鍵盤去抖功能:按鍵在閉合和斷開時(shí),觸點(diǎn)會(huì)存在抖動(dòng)現(xiàn)象,本設(shè)計(jì)采用250hz 低頻信號(hào),觸發(fā)判定為 clk 信號(hào)上升沿和下降沿,也就是在 40ms 時(shí)間內(nèi)會(huì)有兩次判定,如果兩次判定均為同一鍵位,則輸出鍵值,否則輸出為 0,可以消除觸點(diǎn)抖動(dòng)的負(fù)面作用。示意圖如下:圖 3-2 去抖示意圖
33、圖示為兩次按鍵,第一次按鍵時(shí)間極短,可視為一次抖動(dòng),第二次為正常按鍵(時(shí)間較長(zhǎng),可以是多個(gè) clk 周期,圖示只列出 1 個(gè)周期) ,現(xiàn)分析如下:圖示 1 處:讀取 key1 為低;圖示 2 處:讀取 key2 為高;結(jié)果:key 為 0,判定無(wú)按鍵。圖示 1 處:讀取 key1 為低;圖示 2 處:讀取 key2 為低;結(jié)果:key 為對(duì)應(yīng)鍵位值,判定有按鍵。程序如下:module keypad(clksy,x,y,key); /clksy=64hzinput clksy;input3:0 x,y; /4*4 key ,low activeoutput5:0 key;reg5:0 key1,
34、key2;always (posedge clksy) /第一次判定begincase(y3:0,x3:0)8b00010001:key15:0=6d1;8b00010010:key15:0=6d2;8b00010100:key15:0=6d3;8b00011000:key15:0=6d4;8b00100001:key15:0=6d5;8b00100010:key15:0=6d6;8b00100100:key15:0=6d7;8b00101000:key15:0=6d8;8b01000001:key15:0=6d9;8b01000010:key15:0=6d10;8b01000100:key1
35、5:0=6d16;8b01001000:key15:0=6d32;8b10001000:key15:0=6d48;default:key15:0=6d0; /輸出結(jié)果寄存在 key1endcaseendalways (negedge clksy) /第二次判定begincase(y3:0,x3:0)8b00010001:key25:0=6d1; /鍵位 18b00010010:key25:0=6d2; /鍵位 28b00010100:key25:0=6d3; /鍵位 38b00011000:key25:0=6d4; /鍵位 48b00100001:key25:0=6d5; /鍵位 58b001
36、00010:key25:0=6d6; /鍵位 68b00100100:key25:0=6d7; /鍵位 78b00101000:key25:0=6d8; /鍵位 88b01000001:key25:0=6d9; /鍵位 98b01000010:key25:0=6d10; /鍵位 08b01000100:key25:0=6d16; /鍵位8b01001000:key25:0=6d32; /鍵位8b10001000:key25:0=6d48; /鍵位 seldefault:key25:0=6d0;/輸出結(jié)果寄存在 key2endcaseendassign key=(key1=key2)?key1:
37、6d0; /判定 如果兩次結(jié)果相同 則輸出為/鍵值 如果不同 則輸出為 0endmodule3.3 六位 7 段 led 顯示程序設(shè)計(jì)聯(lián)華眾科 fpga 開發(fā)板 fa130 的數(shù)碼顯示為六位 7 段共陰極數(shù)碼管,其工作特點(diǎn)是,當(dāng)筆段電極接高電平,公共陰極接低電平時(shí),相應(yīng)筆段發(fā)光。本模塊同時(shí)具有片選,七段譯碼,滅零功能。本模塊由 250hz 信號(hào)驅(qū)動(dòng),采用動(dòng)態(tài)顯示方法,即對(duì)六個(gè) led 數(shù)碼管循環(huán)掃描。分時(shí)使用顯示器驅(qū)動(dòng)電路??傻妹總€(gè)數(shù)碼管顯示頻率為 250/642hz,人眼視覺(jué)暫留時(shí)間的要求為 25 幀每秒,可達(dá)到要求。程序如下:module xianshi(clksy,a,b,c,d,e,f
38、,g,d0,d1,d2,d3,d4,d5,num0,num1,num2,num3,num4,num5);input clksy;input3:0 num0,num1,num2,num3,num4,num5; /num0-num5 為時(shí)分秒 6 位輸入output a,b,c,d,e,f,g,d0,d1,d2,d3,d4,d5; /a-g 為數(shù)碼管 7 段電平reg a,b,c,d,e,f,g,d0,d1,d2,d3,d4,d5; /d0-d5 為片選信號(hào)reg3:0 num10,num11,num12,num13,num14,num15;reg3:0 temp;reg2:0 flag;alwa
39、ys(posedge clksy) begind0,d1,d2,d3,d4,d5=6b000000;if(flag=6) flag=0;else flag=flag+1;num10,num11,num12,num13,num14,num15=num0,num1,num2,num3,num4,num5;if(num15=0) /首位滅零num15=4bzzzz;case(flag)/片選0:begin temp=num10;d0=1;end1:begin temp=num11;d1=1;end2:begin temp=num12;d2=1;end3:begin temp=num13;d3=1;e
40、nd4:begin temp=num14;d4=1;end5:begin temp=num15;d5=1;enddefault:temp=0;endcasecase(temp) /七段譯碼 4d0:a,b,c,d,e,f,g=7b1111110; /顯示數(shù)字 0 4d1:a,b,c,d,e,f,g=7b0110000; /顯示數(shù)字 1 4d2:a,b,c,d,e,f,g=7b1101101; /顯示數(shù)字 2 4d3:a,b,c,d,e,f,g=7b1111001; /顯示數(shù)字 3 4d4:a,b,c,d,e,f,g=7b0110011; /顯示數(shù)字 4 4d5:a,b,c,d,e,f,g=7b
41、1011011; /顯示數(shù)字 5 4d6:a,b,c,d,e,f,g=7b1011111; /顯示數(shù)字 6 4d7:a,b,c,d,e,f,g=7b1110000; /顯示數(shù)字 7 4d8:a,b,c,d,e,f,g=7b1111111; /顯示數(shù)字 8 4d9:a,b,c,d,e,f,g=7b1111011; /顯示數(shù)字 9 default:a,b,c,d,e,f,g=7b0000000; /無(wú)任何顯示endcaseendendmodule3.4 頂層模塊程序設(shè)計(jì)根據(jù)設(shè)計(jì)思路,畫出流程圖,見 3-3。程序是無(wú)限循環(huán),也就是到了流程圖結(jié)束的地方后又會(huì)回到開始,程序首先判定是否有鍵按下,如果有,
42、則判定鍵值:若鍵值為或移動(dòng)鍵,則會(huì)修改 flag 的值,有前文所述,flag 的值代表時(shí)分秒的個(gè)、十位;若鍵值為 sel 修改鍵,則會(huì)改變sel 寄存器的值,設(shè)計(jì)需求是按一次 sel 鍵將會(huì)進(jìn)入修改狀態(tài),再按一次將退出修改狀態(tài),方案為設(shè)定 sel 寄存器為 1 位。程序接下來(lái)會(huì)判斷 sel 的值,如果為 1 則進(jìn)入修改狀態(tài),為零則進(jìn)入計(jì)時(shí)狀態(tài)。 在修改狀態(tài)下,程序再次判定鍵值,若為數(shù)字鍵,則會(huì)將對(duì)應(yīng)數(shù)據(jù)賦值給 flag所對(duì)應(yīng)緩存,若為或移動(dòng)鍵,則會(huì)修改 flag 的值,若為 sel 修改/確認(rèn)鍵,將退出修改狀態(tài)。圖 3-3 頂層模塊設(shè)計(jì)流程圖在計(jì)時(shí)狀態(tài),程序?qū)⒅鹈雽?duì)秒緩存加 1,判斷:若秒低位
43、為 9,則秒低位清零,秒高位加一;判斷:若秒高位為 5,則秒高位清零,分低位加一;判斷:若分低位為 9,則分低位清零,分高位加一;判斷:若分高位為 5,則分高位清零,時(shí)低位加一;判斷:若時(shí)低位為 9,則時(shí)低位清零,時(shí)高位加一;判斷:若時(shí)高低位為 23,則時(shí)清零。程序到這里還沒(méi)有結(jié)束,關(guān)于修改位閃爍的方案,我將它和輸出管腳賦值整合在一起,首先判定是否為修改狀態(tài),若是,則將該修改數(shù)據(jù)和 5hz 頻率相與再賦值給輸出管腳,當(dāng) 5hz 頻率為高電平,輸出緩存數(shù)據(jù),反之則無(wú)輸出信號(hào),這樣可實(shí)現(xiàn)被修改字符出現(xiàn)頻率為 5hz 的閃爍。程序如下:module clock(clkss,key,sec,min,h
44、our);input clkss;input5:0 key;reg sel;reg2:0 flag1,sumsec;output7:0 sec,min,hour;wire7:0 sec,min,hour; reg23:0 sum;reg seccin,cinsec,cinmin,ss0,ss1,ss2,ss3,ss4,ss5;initial flag1=3d0;always(posedge clkss)beginif(key=6d48) sel=sel+1d1;/如果為 sel 鍵 將在修改/確認(rèn)間切換else if(key=6d16) /如果為鍵 begin if(!flag1) flag1
45、=flag1-3d1; /如果 flag 不為 0 ,那么 flag 減 1 endelse if(key=6d32) /如果為鍵 begin if(flag1=5) flag1=3d5;/如果 flag 等于 5 ,flag 值不變 else flag1=flag1+3d1;/否則 flag 加 1 endendalways(posedge clkss) /這段語(yǔ)句將 5hz 信號(hào)分頻成為 1hz 時(shí)鐘信號(hào)begin if(sumsec2:0=3d4)begin sumsec2:0=3d0; seccin=1;endelse begin sumsec2:0=sumsec2:0+3d1; se
46、ccin=0;endendalways(posedge clkss)begin if(sel)/判定是否為修改狀態(tài)begin if(flag1=0) begin if(key=6d10) sum3:0=4d0; /零鍵位的識(shí)別 else sum3:0=key3:0?key3:0:sum3:0; /key 低四位不為零則賦值 end else if(flag1=1) begin if(key=6d10) sum7:4=4d0; else sum7:4=key3:0?key3:0:sum7:4; endendelse if(seccin) beginif(sum3:0=4d9)begin sum3
47、:0=4d0;if(sum7:4=4d5)begin sum7:4=4d0; cinsec=1;endelse begin sum7:4=sum7:4+4d1; cinsec=0;endendelse begin sum3:0=sum3:0+seccin; cinsec=0;endendendalways(posedge clkss)begin if(sel)begin if(flag1=2) begin if(key=6d10) sum11:8=4d0; else sum11:8=key3:0?key3:0:sum11:8; end else if(flag1=3) begin if(key
48、=6d10) sum15:12=4d0; else sum15:12=key3:0?key3:0:sum15:12; endendelse if(cinsec) beginif(sum11:8=4d9)begin sum11:8=4d0;if(sum15:12=4d5)begin sum15:12=4d0; cinmin=1;endelse begin sum15:12=sum15:12+4d1; cinmin=0;endendelse begin sum11:8=sum11:8+cinsec; cinmin=0;endendendalways(posedge clkss)beginif(se
49、l)begin if(flag1=4) begin if(key=6d10) sum19:16=4d0; else sum19:16=key3:0?key3:0:sum19:16; end else if(flag1=5) begin if(key=6d10) sum23:20=4d0; else sum23:20=key3:0?key3:0:sum23:20; endendelse if(cinmin) beginif(sum23:16=8d23) sum23:16=8d0;elseif(sum19:16=4d9) begin sum19:16=4d0; sum23:20=sum23:20+
50、4d1; endelse sum19:16=sum19:16+cinmin;endendalways (posedge clkss)beginif(sel)begin case(flag1)/判定是否為修改狀態(tài)0:ss0,ss1,ss2,ss3,ss4,ss5=6b100000;1:ss0,ss1,ss2,ss3,ss4,ss5=6b010000;2:ss0,ss1,ss2,ss3,ss4,ss5=6b001000;3:ss0,ss1,ss2,ss3,ss4,ss5=6b000100;4:ss0,ss1,ss2,ss3,ss4,ss5=6b000010;5:ss0,ss1,ss2,ss3,ss
51、4,ss5=6b000001;default:ss0,ss1,ss2,ss3,ss4,ss5=6d0; endcaseendelse ss0,ss1,ss2,ss3,ss4,ss5=6d0;endassign sec3:0=ss0?(clkss?sum3:0:4bz):sum3:0; assign sec7:4=ss1?(clkss?sum7:4:4bz):sum7:4;assign min3:0=ss2?(clkss?sum11:8:4bz):sum11:8;assign min7:4=ss3?(clkss?sum15:12:4bz):sum15:12;assign hour3:0=ss4?
52、(clkss?sum19:16:4bz):sum19:16;assign hour7:4=ss5?(clkss?sum23:20:4bz):sum23:20; /*括號(hào)內(nèi)的值:clkss 高電平 sum,低電平為高阻態(tài),輸出管腳的值:該管腳在修改狀態(tài)則為括號(hào)內(nèi)的值 否則為 sum 值*/endmodule第四章 程序仿真4.1 分頻器程序仿真因?yàn)榉诸l比例太大,在仿真時(shí)將比例減小。下圖為將寄存器 1 的分頻比 1000:1 改為 1:1,即:if(count19:0=10d999)if(count19:0=10d0);寄存器 2 的分頻比 132:1 改為 2:1,即:if(count27:0=
53、8d131)if(count27:0=8d1);將寄存器 3 的分頻比 250:1 改為 3:1,即:if(count37:0=8d249)if(count37:0=8d2);將寄存器 4 的分頻比 50:1 改為 6:1,即:if(count45:0=6d49) if(count45:0=6d5);其他程序部分無(wú)任何改變,圖 4-1 為修改后的程序仿真結(jié)果。圖 4-1 分頻器模擬仿真設(shè)在單位時(shí)間內(nèi):clk50mhz 的上升沿的次數(shù)為 n,clksy 取反次數(shù)為 nsy,計(jì)數(shù)器 1 的分頻比為 p1,計(jì)數(shù)器 2 的分頻比為 p2,計(jì)數(shù)器 3 的分頻比為 p3,計(jì)數(shù)器4 的分頻比為 p4,則 n
54、sy=n/(p1*p2) ,代入模擬仿真數(shù)據(jù),得 nsy=n/2,若在 4 個(gè)clk50mhz 的時(shí)間內(nèi),clksy 取反 2 次,即一個(gè)周期,所以 clksy 與 clk50mhz 的頻率比為 1:4,與模擬仿真結(jié)果吻合。如圖可看出:在 clksy 取反 6 次的時(shí)間內(nèi),clkss 取反一次,clk 取反 3 次,仿真結(jié)果正確。如將各寄存器分頻比改為原值,能得到與程序設(shè)計(jì)所需要頻率一致的結(jié)果。4.2 行列式鍵盤程序仿真這部分的仿真比較簡(jiǎn)單,如圖 4-2 所示。 圖 4-2 行列式鍵盤程序仿真在上圖中,一共模擬了 3 次按鍵,對(duì)照?qǐng)D 2-3 和圖 2-4:第一次按下 x3,y3 鍵,即鍵,輸出
55、 key4=1,即 key5:0=16;第二次按下 x3,y2 鍵,即 7 鍵,輸出 key5:0=7;第三次按下 x2,y2 鍵,即 6 鍵,輸出 key5:0=6.可看出仿真結(jié)果完全正確。4.3 六位 7 段 led 顯示程序仿真如圖 4-3 所示為輸入信號(hào):圖 4-3 led 輸入信號(hào)圖 4-4 所示為輸出信號(hào)。圖 4-4 led 輸出信號(hào)由圖可得:片選信號(hào)正常工作,a,b,c,d,e,f,g 七段信號(hào)隨片選信號(hào)變化,對(duì)比共陰極數(shù)碼管真值表 2-1,仿真結(jié)果正確。4.4 頂層模塊程序仿真1)時(shí)鐘仿真,如圖 4-5。 圖 4-5 時(shí)鐘仿真2)閃爍仿真,如圖 4-6。圖 4-6 閃爍仿真3)
56、移位仿真,如圖 4-7。圖 4-7 移位仿真4)修改仿真如圖 4-8。圖 4-8 修改仿真5)確認(rèn)鍵仿真,如圖 4-9。圖 4-9 確認(rèn)鍵仿真說(shuō)明一下 key 值代表的含義:1-10:表示輸入數(shù)字 1,2,3,9,0;16:左移32:右移48:修改/確認(rèn)由以上多圖仿真可看出,程序功能完全正確。4.5 原理圖 如圖 4-10 所示。圖 4-10 原理圖連接本設(shè)計(jì)沒(méi)有外部鏈接,分頻模塊接入開發(fā)板內(nèi)置時(shí)鐘 66mhz 信號(hào),輸入模塊接 4*4 行列式鍵盤,輸出部分為六位 7 段數(shù)碼管,小數(shù)點(diǎn)顯示部分直接接入 1hz 信號(hào),作為時(shí)鐘狀態(tài)下秒的顯示信號(hào)。結(jié) 論本設(shè)計(jì)實(shí)現(xiàn)了設(shè)計(jì)任務(wù)要求的大部分功能,設(shè)計(jì)要
57、求實(shí)現(xiàn)的時(shí)鐘,鍵盤,閃爍,顯示等功能都已完成,仿真結(jié)果也令我十分滿意,雖然仿真結(jié)果中存在不少抖動(dòng)現(xiàn)象,但經(jīng)過(guò)觀察,抖動(dòng)的時(shí)間很短,并且在各時(shí)鐘的上升沿和下降沿時(shí)沒(méi)有抖動(dòng)(同 3.2 節(jié)鍵盤去抖原理) ,并且 led 顯示部分的仿真結(jié)果不存在抖動(dòng),如果將程序?qū)懭?fpga 開發(fā)板,將不存在由抖動(dòng)帶來(lái)的任何負(fù)面作用。但本設(shè)計(jì)不足的地方還有很多,相對(duì)來(lái)說(shuō),這是一個(gè)簡(jiǎn)單的程序,可以改進(jìn)的地方還有很多,如在鍵盤中加入“+”“-”“=”等鍵實(shí)現(xiàn)簡(jiǎn)單計(jì)算器的功能,如加入百分秒寄存器實(shí)現(xiàn)秒表功能,設(shè)計(jì)要求的小數(shù)點(diǎn)功能也被我簡(jiǎn)化成為了一個(gè) 1hz 的連接線(見圖 4-5) ,這些升級(jí)功能暫且不提,在仿真時(shí)我發(fā)現(xiàn)
58、了一個(gè)比較不方便的負(fù)面作用,在按鍵時(shí)只考慮了去抖,卻沒(méi)有考慮按鍵的延時(shí),舉例來(lái)說(shuō),若按下“”鍵,鍵盤模塊會(huì)立即響應(yīng)(250hz)并傳遞鍵值給主模塊,主模塊將會(huì)在 0.2 秒(5hz)內(nèi)響應(yīng)這個(gè)信號(hào)并改變 flag 的值,仿真在這里沒(méi)有出現(xiàn)問(wèn)題,但是:如果在下一個(gè) 0.2 秒內(nèi)仍在繼續(xù)按著“”鍵,主模塊將會(huì)繼續(xù)改變 flag 的值,也就是說(shuō),如果按下“”一秒,flag 將左移 5 次,而一般鍵盤卻是按下再?gòu)椘饡r(shí)才會(huì)做出響應(yīng),或持續(xù)按下一段時(shí)間后才會(huì)做出“連加”響應(yīng)。解決辦法:定義一個(gè) 4 位寄存器,寄存器的值在主程序接收到鍵值時(shí)改變,如下所示:reg3:0 key1; /定義寄存器always
59、(posedge clkss) begin if(key1) /如果 key1 不為 0 begin if(!key) /如果 key 為 0,即已經(jīng)松開按鍵 case(key1) /判斷 key1 的值1:; /對(duì)應(yīng)各值的處理方法,不再累贅2:;3:; :13:; endcaseendelse /如果為 0,將檢測(cè) key 的值,如果 key 不為零 /則將 key 的鍵位 1-13 賦值給 key1,不再贅述關(guān)于小數(shù)點(diǎn)移動(dòng)的功能實(shí)現(xiàn)。本設(shè)計(jì)實(shí)現(xiàn)了 fpga 的“外設(shè)”功能,但是似乎卻并不“通用” , 本設(shè)計(jì)中,小數(shù)點(diǎn)僅僅起到一個(gè)跟隨秒閃爍的功能,eda 技術(shù)的發(fā)展,hdl 語(yǔ)言的強(qiáng)大不僅僅
60、是制作一個(gè)帶鍵盤的時(shí)鐘,當(dāng)為了實(shí)現(xiàn)更多的功能,小數(shù)點(diǎn)的移動(dòng)十分的必要,下面簡(jiǎn)要敘述下其設(shè)計(jì)思想:例:使用鍵盤輸入一組帶小數(shù)點(diǎn)的數(shù)據(jù),要求液晶實(shí)時(shí)顯示輸入數(shù)據(jù)設(shè)計(jì)思想:定義一個(gè)默認(rèn)為 0 的寄存器,代表小數(shù)點(diǎn)的位置為最低位,當(dāng)檢測(cè)到鍵盤小數(shù)點(diǎn)輸入時(shí),觸發(fā)一個(gè)模塊,當(dāng)再次檢測(cè)到數(shù)字輸入時(shí),該寄存器自加一。功能實(shí)現(xiàn):例如鍵盤輸入 123.456 液晶顯示器依次顯示結(jié)果如下:1.;12.;123.;123.4;123.45;123.456。實(shí)現(xiàn)了小數(shù)點(diǎn)移動(dòng)功能。綜上所述,在完成一個(gè)設(shè)計(jì)課題時(shí),要充分考慮到各種問(wèn)題,以及實(shí)現(xiàn)方法的優(yōu)越性,盡量使在滿足課題要求的前提下做到盡善盡美。這就要我們多思考多對(duì)比,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB51T 1625-2013 政務(wù)服務(wù)中心 電子政務(wù)大廳數(shù)據(jù)接口規(guī)范
- DB51T 1520-2012 土壤中總鉻的測(cè)定電感耦合等離子體發(fā)射光譜法
- DB51T 1125-2010 白烏鱧養(yǎng)殖技術(shù)規(guī)范 苗種
- 新建呋喃樹脂砂鑄造生產(chǎn)線項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 新建箱式變電站項(xiàng)目可行性研究報(bào)告
- 高強(qiáng)鋼絲項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 新建樟樹原油項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 工業(yè)電爐投資項(xiàng)目可行性分析報(bào)告
- 完整鋼結(jié)構(gòu)畢業(yè)課程設(shè)計(jì)
- 2024-2030年新版中國(guó)高大乳油項(xiàng)目可行性研究報(bào)告
- 臨床醫(yī)學(xué)研究進(jìn)展展望新興領(lǐng)域與發(fā)展趨勢(shì)培訓(xùn)課件
- 北京市2022-2023學(xué)年三年級(jí)上學(xué)期語(yǔ)文期末試卷(含答案)2
- 2023-2024年三年級(jí)上冊(cè)科學(xué)(教科版) 期末模擬試卷(三)(含解析)
- 消防爬梯施工方案
- 關(guān)于工程師思維素養(yǎng)課件
- 昆蟲記32種昆蟲簡(jiǎn)介
- 短視頻平臺(tái)私域建設(shè)研究報(bào)告
- 工業(yè)風(fēng)扇-專業(yè)介紹
- 23秋國(guó)家開放大學(xué)《廣告設(shè)計(jì)》形考任務(wù)1-4參考答案
- 污水處理廠有毒有害氣體檢測(cè)記錄表
- 馬克思主義與社會(huì)科學(xué)方法論課后思考題答案全
評(píng)論
0/150
提交評(píng)論