課程設(shè)計——基于FPGA的出租車計價器設(shè)計1_第1頁
課程設(shè)計——基于FPGA的出租車計價器設(shè)計1_第2頁
課程設(shè)計——基于FPGA的出租車計價器設(shè)計1_第3頁
課程設(shè)計——基于FPGA的出租車計價器設(shè)計1_第4頁
課程設(shè)計——基于FPGA的出租車計價器設(shè)計1_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、××大學(xué)××學(xué)院××課程設(shè)計××大學(xué)××學(xué)院××課程設(shè)計基于FPGA的出租車計價器設(shè)計 學(xué)生姓名學(xué) 號所 在 系專業(yè)名稱班 級指導(dǎo)教師成 績 ××大學(xué)××學(xué)院二一一年六月摘要:本文介紹了一個以Altera公司的CycloneII可編程邏輯芯片EP2C5T144C8為控制核心、運用VHDL硬件描述語言附加一定外圍電路組成的出租車計費器系統(tǒng)。本設(shè)計論文主要介紹了出租車計費器系統(tǒng)的組成及工作原理,簡述了在EDA平臺上用單片F(xiàn)PGA器件構(gòu)成該數(shù)

2、字系統(tǒng)的設(shè)計思想和實現(xiàn)過程。同時,詳細論述了人機交互驅(qū)動模塊、驅(qū)動模塊、計程模塊、計費模塊、譯碼動態(tài)掃描模塊等的設(shè)計方法與技巧。利用FPGA芯片實現(xiàn)一些功能較復(fù)雜的電子產(chǎn)品設(shè)計,不僅可以增加系統(tǒng)設(shè)計的靈活性,利用它進行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。同時,在進行SOPC設(shè)計的時候,我們可以自由調(diào)用NIOS資源模塊構(gòu)建軟核,從而減小了系統(tǒng)的功耗,實現(xiàn)產(chǎn)品的強大功能。關(guān)鍵字:FPGA,VHDL,EP2C5T144C8,SOPCAbstract:This paper introduces a Altera company to CycloneII programmab

3、le logic chips EP2C5T144C8 as control core, useing VHDL hardware description language add a certain peripheral circuit of the message accounting device system of a taxi. This design paper mainly introduced the message accounting device taxi system composition and working principle, this paper expoun

4、ds on the platform in EDA using single pill FPGA components, the digital system design thought and the implementation process. At the same time, discusses the human-computer interaction driver modules, driving module, taxi module, billing module, decode dynamic scanning module design methods and ski

5、lls. Use the FPGA chip realize some function is more complex electronic product design, not only can increase the flexibility of the system design, use it for product development, not only the low cost, short cycle, high reliability, and with full intellectual property rights. Meanwhile, during the

6、SOPC design, we can free calls NIOS resource module building soft nuclear, thus reduce power consumption, realizing products of the system of the powerful features.Key words: FPGA,VHDL,EP2C5T144C8,SOPC目 錄前言1系統(tǒng)功能軟件介紹11.1 QuartusII軟件介紹11.2 FPGA芯片介紹11.3 硬件描述語言介紹22總體方案設(shè)計32.1 系統(tǒng)框圖42.2 基于MCU的出租車計費器42.3 基于

7、FPGA的出租車計費器52.4 總體設(shè)計方案53單個模塊設(shè)計63.1 人機交互驅(qū)動模塊63.1.1人機交互模塊63.1.2人機交互模塊仿真73.2 4x4矩陣鍵盤驅(qū)動模塊設(shè)計73.2.1 4x4矩陣鍵盤模塊83.2.2 4x4矩陣鍵盤仿真圖73.3 二進制BIN轉(zhuǎn)換成BDC(10進制)模塊93.4 FILTER驅(qū)動模塊設(shè)計93.5 PLS模塊驅(qū)動設(shè)計103.5.1 PLS模塊設(shè)計103.5.2 PLS模塊設(shè)計仿真圖113.6 出租車控制驅(qū)動模塊設(shè)計113.7 頂層模塊124系統(tǒng)功能134.1 計費功能實現(xiàn)134.2 顯示功能實現(xiàn)135. 設(shè)計總結(jié)146參考文獻14附錄(主要底層模塊驅(qū)動)16前

8、言隨著EDA技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計技術(shù)和工具發(fā)生了深刻的變化,大規(guī)模可編程邏輯器件CPLDFPGA的出現(xiàn),給設(shè)計人員帶來了諸多方便。利用它進行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產(chǎn)權(quán)。本文介紹了一個以Altera公司可編程邏輯芯片EP2C5T144C8為控制核心、附加一定外圍電路組成的出租車計費器系統(tǒng)。該電子產(chǎn)品在全國有很多出租車公司中得到了使用,因此出租車市場是龐大的。由于受到油價的影響各大城市推出了運價油價聯(lián)動機制,所以出租車計價器計價標(biāo)準(zhǔn)的靈活性設(shè)定成為未來計費器不可缺少的一部分。現(xiàn)在的計費器大部分是以單片機為開發(fā)平臺,但是單片機的程序是不通用的,不同的芯片

9、有不同的指令集,因此設(shè)計研發(fā)比較困難。而FPGA等數(shù)字可編程器件的出現(xiàn)徹底解決了這個問題,而且更穩(wěn)定、設(shè)計更靈活、能實現(xiàn)較為復(fù)雜的功能,運用EDA軟件可方便在電腦上實現(xiàn)設(shè)計和仿真,由于本設(shè)計采用的可編程器件ALTERA公司的CYCLONEII系列FPGA( EP2C5T144C8)。QuartusII化和易學(xué)易用的可視化設(shè)計環(huán)境 ,并具有符合工業(yè)標(biāo)準(zhǔn)的 EDA 工具接口 ,能在各種平臺上運行. 它支持 VHDL、VHDL、AHDL(AL TERA HDL)等硬件描述語言.使用QuartusII軟件和硬件描述語言VHDL來實現(xiàn)LCD顯示(包括時鐘、車速、等待時間、行駛路程、開始計費和停止、參數(shù)設(shè)

10、置菜單以及營運額統(tǒng)計顯示切換)、計價標(biāo)準(zhǔn)靈活設(shè)定自動計價、統(tǒng)計功能等。1系統(tǒng)功能軟件介紹1.1 QuartusII軟件介紹QuartusII是Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。 QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。 Q

11、uartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。 此外,QuartusII通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平。1.2 FPGA芯片介紹隨著現(xiàn)代芯片工藝的改進,F(xiàn)PGA的等效系統(tǒng)門達到到幾百萬門,而且工作頻率

12、也隨之提高。FPGA也就大量的在電子產(chǎn)品中出現(xiàn)。在通信行業(yè),傳輸網(wǎng),醫(yī)療儀器,各種電子儀器,安防監(jiān)控,電力系統(tǒng),汽車電子,消費類電子中都大面積的使用。隨產(chǎn)品研發(fā)周期的逐步縮短,定制型產(chǎn)品的開發(fā)使FPGA在后面的應(yīng)用面越來越廣。例如在2G通信,3G通信,以后的4G通信,wimax等等通信類的設(shè)備中它與DSP,MPU一起大量出現(xiàn)在其中。尤其是通信的數(shù)字化,軟件無線電等概念涌現(xiàn)到電子行業(yè)的各個領(lǐng)域,芯片設(shè)計的工藝的改進,45nm工藝的出現(xiàn),使得FPGA成為必不可少的流行的實惠的器件。FPGA最大的特點就是靈活,實現(xiàn)你想實現(xiàn)的任何數(shù)字電路,可以定制各種電路。減少受制于專用芯片的束縛。真正為自己的產(chǎn)品量

13、身定做。在設(shè)計的過程中可以靈活的更改設(shè)計。而且它強大的邏輯資源和寄存器資源可以讓你輕松的去發(fā)揮設(shè)計理念,其并行執(zhí)行,硬件實現(xiàn)的方式可以應(yīng)對設(shè)計中大量的高速電子線路設(shè)計需求。 FPGA比DSP擁有更快的速度,可以實現(xiàn)非常復(fù)雜的高速邏輯,F(xiàn)PGA比ASIC(專用芯片)有更短的設(shè)計周期和靈活性,免去昂貴的開版費用,而且可以隨時裁減,增加你想要的功能達到規(guī)避設(shè)計風(fēng)險,回避芯片廠商的限制。另外知識產(chǎn)權(quán)的概念不斷涌現(xiàn),仿制別人抄襲,F(xiàn)PGA完全讓設(shè)計的智慧得以保護。讓公司的利益在較長時間內(nèi)得到保證。隨FPGA芯片供應(yīng)商的重視和第三方公司的重視,現(xiàn)在有非?,F(xiàn)成的IP核被提供,進一步縮短設(shè)計周期縮短,減小開發(fā)

14、成本?,F(xiàn)在很多免費的軟IP核和硬 IP核的出現(xiàn)更是壓縮了成本。在當(dāng)前的FPGA器件提供商中XILINX和ALTEAR這兩家公司是份額最大的供應(yīng)商,估計占90%以上。這兩家都有強大的技術(shù)支持,芯片的穩(wěn)定性和產(chǎn)品系列都特別的多。涵蓋了高中低幾個設(shè)計層次。如果要追求高可靠比如軍工,航天,強電磁干擾等條件下的設(shè)計可以考慮ACTEL公司的 FPGA,不過價格很貴。如果想一味的追求成本可以考慮LATTIC公司的FPGA,就是穩(wěn)定性和相同條件下的布線成功率較差。下面介紹一下FPGA的幾大優(yōu)點:FPGA運行速度快:FPGA內(nèi)部集成鎖項環(huán),可以把外部時鐘倍頻,核心頻率可以到幾百M,而單片機運行速度低的多.在高速

15、場合,單片機無法代替FPGA;FPGA易于實現(xiàn)大規(guī)模系統(tǒng):單片機IO口有限,而FPGA動輒數(shù)百IO,可以方便連接外設(shè).比如一個系統(tǒng)有多路AD/DA,單片機要進行仔細的資源分配,總線隔離,而FPGA由于豐富的IO資源,可以很容易用不同IO連接各外設(shè);FPGA能處理更復(fù)雜功能:單片機程序是串行執(zhí)行的,執(zhí)行完一條才能執(zhí)行下一條,在處理突發(fā)事件時只能調(diào)用有限的中斷資源;而FPGA不同邏輯可以并行執(zhí)行,可以同時處理不同任務(wù),這就導(dǎo)致了FPGA工作更有效率;FPGA大量軟核方便進行二次開發(fā):FPGA甚至包含單片機和DSP軟核,并且IO數(shù)僅受FPGA自身IO限制。所以,FPGA又是單片機和DSP的超集,也就

16、是說,單片機和DSP能實現(xiàn)的功能,FPGA一般都能實現(xiàn)。1.3 硬件描述語言介紹VHDL語言的優(yōu)點是語法嚴(yán)謹,層次結(jié)構(gòu)清晰。缺點是熟悉時間長,不夠靈活。FPGA的優(yōu)點是設(shè)計周期短、靈活。適合用于小批量系統(tǒng),提高系統(tǒng)的可靠性和集成度,所以本設(shè)計使用了VHDL語言,它的英文全稱是Very_High_Speed Integrated Circuit Hardwere Description Language 被稱為是最標(biāo)準(zhǔn)的硬件描述語言,有專家認為在以后VHDL和Verilog HDL語言將承擔(dān)幾乎全部的數(shù)字系統(tǒng)的設(shè)計。VHDL語言主要用于數(shù)字系統(tǒng)的結(jié)構(gòu)|行為、功能和接口。除了含有許多具有硬件特征的

17、語句外,VHDL的語言形式和描述風(fēng)格與語法十分類似于一般的計算機高級語言,VHDL語言的結(jié)構(gòu)程序特點是將一項工程設(shè)計,或被稱為設(shè)計實體(可以是一個元件、一個電路模板或一個系統(tǒng))分成外部(或稱為可視部分)和內(nèi)部(或稱不可視部分),即設(shè)計實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦內(nèi)部開發(fā)完成后,其他的設(shè)計可以直接調(diào)用這個實體。這種設(shè)計將內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。使用VHDL設(shè)計系統(tǒng)方法是自頂向下的系統(tǒng)設(shè)計方法,在設(shè)計過程中,首先從整體上對系統(tǒng)設(shè)計做詳細的規(guī)劃,然后完成電路系統(tǒng)功能行為方面的設(shè)計。隨著DEA技術(shù)的發(fā)展,使用硬件描述語言設(shè)計FPGA成為一種趨勢

18、,使用QuartusII軟件用VHDL語言開發(fā)FPGA的完整流程為:文本編輯:用任何的文本編輯器可以,也可以用專用的HDL編輯環(huán)境,通常VHDL保存為.vhd文件;功能仿真:將文件調(diào)入HDL仿真軟件進行功能仿真,檢查邏輯功能是否正確;邏輯綜合:將源文件調(diào)入邏輯綜合器進行綜合,即把語言綜合成最簡單的布爾表達式和信號的鏈接關(guān)系;布局布線:將綜合得到的文件調(diào)入軟件中進行布線,把設(shè)計好的邏輯安放到FPGA內(nèi);時序仿真:需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序;編程下載:確認仿真沒有錯誤后,將文件下載到芯片中觀察。2總體方案設(shè)計2.1 系統(tǒng)框圖圖1 出租車計價器系統(tǒng)框圖2.2 基于M

19、CU的出租車計費器硬件各個模塊的功能:鍵盤控制功能是啟動出租車的計價器,改變出租車計價器的狀態(tài)如運行、等待計時、不同計費模式的切換;里程計算單元是通過安裝傳感器檢測到得信號,送到單片機,經(jīng)處理計算,送給顯示單元;利用單片機豐富的I/O端口,實現(xiàn)基本的里程計價功能和價格調(diào)節(jié)、時鐘顯示功能;利用單片機實現(xiàn)出租車計價器的開發(fā)。外圍電路較多,試調(diào)復(fù)雜,抗干擾能力差,特別這種計程車的額計價器需要長時間的不間斷運作的而系統(tǒng),由于主要是軟件運作,容易出錯,造成系統(tǒng)不穩(wěn)定,硬件總原理框圖如圖2所示。圖2 出租車計價器的總原理框圖2.3 基于FPGA的出租車計費器基于FPGA的出租車計費器是由外部輸入模塊、控制

20、模塊和顯示模塊三部分組成。控制模塊是整個系統(tǒng)的核心。它由分頻模塊,控制模塊,計量模塊和譯碼顯示模塊構(gòu)成。分頻模塊:是由系統(tǒng)對系統(tǒng)時鐘進行分頻以得到低頻信號;控制模塊:主要是完成對計費器狀態(tài)的控制;計量模塊:它完成計價,計時和計程的功能;譯碼顯示模塊:譯碼顯示模塊完成計價,計時和計程的顯示。計費據(jù)送入譯碼顯示模塊譯碼,最后送至以百元、十元、元、角為對應(yīng)單位的數(shù)碼管上顯示。計時數(shù)據(jù)送入譯碼顯示模塊,最后送至以分為單位對應(yīng)的數(shù)碼管上顯示。計程數(shù)據(jù)送入譯碼顯示模塊進行譯碼,最后送至以千米為單位的數(shù)碼管上顯示。2.4 總體設(shè)計方案方案一:它的開發(fā)及制作成本較低,能較大程度的利用資源,但外圍電路較多,試調(diào)

21、復(fù)雜,抗干擾能力差,特別對這種計程車的計價器需要長時間不間斷運作的系統(tǒng),由于主要是軟件運作,容易出錯,造成系統(tǒng)不穩(wěn)定。方案二:將所有芯片集成在一塊芯片上,體積大大減小的同時提高了穩(wěn)定性,且可以用EDA軟件仿真,試調(diào),易于進行功能擴展,外圍電路較少,采用硬件邏輯電路實現(xiàn),器最大的優(yōu)點是穩(wěn)定性好,抗干擾能力強,非常適合作為計程車的計價器系統(tǒng)的控制核心。從以上兩種方案的比較可以看出基于FPGA的設(shè)計方案要優(yōu)于基于單片機的設(shè)計方案,基于FPGA的設(shè)計方案穩(wěn)定性相對于單片機的設(shè)計方案來說它更易于將來進行功能擴展。因此我們確定采用基于FPGA的出租車計費器的設(shè)計方案。3單個模塊設(shè)計3.1 人機交互驅(qū)動模塊

22、本系統(tǒng)當(dāng)中使用的是以多位數(shù)碼管實現(xiàn)的人機交互界面來顯示出租車當(dāng)前的計價的情況。多位數(shù)碼管可以使用動態(tài)掃描的方式來實現(xiàn)數(shù)據(jù)的顯示,這樣不僅節(jié)約了IO口資源,同時也節(jié)約的系統(tǒng)的成本。具體的硬件連接如圖3所示。圖 人機交互硬件連接圖3.1.1 人機交互模塊人機交互模塊利用Verilog HDL硬件描述語言實現(xiàn)了軟件驅(qū)動,在QuartusII平臺下實現(xiàn)了軟件部分,同時將軟件轉(zhuǎn)換成原理圖的形式顯示。人機交互模塊原理圖如圖4。圖4 人機交互模塊原理圖3.1.2 人機交互模塊仿真人機交互原理是將FPGA處理后的數(shù)據(jù)經(jīng)過3-8譯碼器驅(qū)動實現(xiàn)4位LED數(shù)碼管,然后將數(shù)據(jù)送到人機界面進行數(shù)據(jù)的顯示。仿真圖如圖5所

23、示。圖5 人機交互模塊仿真圖3.2 4x4矩陣鍵盤驅(qū)動模塊設(shè)計本系統(tǒng)當(dāng)中使用矩陣鍵盤實現(xiàn)對出租出計價器的一些控制按鍵。如果只用機械按鍵的話,不僅浪費了IO口的資源,同時不利于控制。3.2.1 4x4矩陣鍵盤模塊利用逐行掃描的方法實現(xiàn)對4x4矩陣鍵盤的驅(qū)動,利用的是Verilog HDL硬件描述語言實現(xiàn)的矩陣鍵盤的驅(qū)動。Verilog HDL寫矩陣鍵盤的驅(qū)動,方便易實現(xiàn),因為Verilog HDL與標(biāo)準(zhǔn)C語法是很相似的,所以寫的矩陣鍵盤的驅(qū)動也十分好用,同時也將軟件代碼轉(zhuǎn)換成了原理圖符號,如圖6。圖6 4x4矩陣鍵盤的原理圖符號3.2.2 4x4矩陣鍵盤仿真圖圖7 4x4矩陣鍵盤的仿真圖3.3

24、二進制BIN轉(zhuǎn)換成BDC(10進制)模塊在本系統(tǒng)當(dāng)中,由于我們計算后的數(shù)據(jù)是二進制的數(shù)據(jù),但是在我們在顯示的時候我們會用到的是BCD碼的十進制數(shù)據(jù)。所以,如圖8所示為二進制BIN文件到BCD碼的十進制數(shù)據(jù)的一個轉(zhuǎn)換模塊。圖8 二進制轉(zhuǎn)換成BDC(10進制)原理圖符號3.4 FILTER驅(qū)動模塊設(shè)計 本系統(tǒng)當(dāng)中使用了FILTER模塊,使用的是VHDL實現(xiàn)的該模塊的設(shè)計。VHDL語言簡單易用,設(shè)計本模塊十分簡單方便。該模塊有兩個驅(qū)動脈沖,一個是時鐘脈沖,另一個是10MS的脈沖。同時,在這個模塊里面我們還加入了一個按鍵脈沖輸入,原理圖如圖9所示。圖9 FILTER驅(qū)動模塊原理圖符號3.5 PLS模塊

25、驅(qū)動設(shè)計3.5.1 PLS模塊設(shè)計 本系統(tǒng)當(dāng)中使用了一個PLS的模塊,該模塊的驅(qū)動使用的是VHDL硬件描述語言來實現(xiàn)的。本系統(tǒng)主要實現(xiàn)的是產(chǎn)生三個時鐘信號,我們板上的使用的是CLOCK是50MHZ,然后進行分頻得到1S的脈沖、1MS的脈沖和10MS的脈沖。如圖10所示。圖10 PLS模塊原理圖符號3.5.2 PLS模塊設(shè)計仿真圖圖11 PLS模塊設(shè)計仿真圖3.6 出租車控制驅(qū)動模塊設(shè)計 本系統(tǒng)是一個出租車的計價器,那么計價器的控制模塊肯定是不能少的。在計價器控制模塊當(dāng)中,我們主要利用的是4x4矩陣鍵盤當(dāng)中相應(yīng)的按鍵來實現(xiàn)控制,比如說出租車開始計價,停止計價,計價器清零和出租車的速度等控制信號的

26、輸入,具體原理圖如圖12所示:圖12 出租車控制原理圖符號3.7 頂層模塊 本系統(tǒng)的頂層模塊也是利用VHDL硬件描述語言來實現(xiàn)的,同時我們可以由下圖可以看到該系統(tǒng)的頂層模塊十分簡單,各個底層模塊的引腳映射都是在頂層模塊里面實現(xiàn)的,具體的實現(xiàn)如圖13所示。圖13頂層模塊原理圖符號4系統(tǒng)功能4.1 計費功能實現(xiàn)費用的計算是按行駛里程收費,設(shè)出租車的起步價是5.00元,當(dāng)里程小于3km里時,按起步價收費;當(dāng)里程大于3km時每公里按1.3元計費。等待累計時間超過2min,按每分鐘1.5元計費。所以總費用按下式計算:總費用=起步價+(里程-3km)*里程單價+等候時間*等候單價。4.2 顯示功能實現(xiàn)顯示

27、汽車行駛里程:用四位數(shù)字顯示,顯示方式為“XXXX”,單價為km。計程范圍為099km,計程分辨率為1km。顯示等候時間:用兩位數(shù)字顯示分鐘,顯示方式為“XX”。計時范圍為059min,計時分辨率為1min。顯示總費用:用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為元。計價范圍為999.9元,計價分辨率為0.1元。5.設(shè)計總結(jié)基于FPGA的出租車計價器電子產(chǎn)品設(shè)計已經(jīng)廣泛應(yīng)用到出租車行業(yè),該設(shè)計是一種相對比較流行的產(chǎn)品設(shè)計。該設(shè)計對于里程和等待時間的計數(shù)都使用的是計數(shù)器的原理,通過fin和stop信號的不同值實現(xiàn)在不同情況下的計數(shù);通過分頻產(chǎn)生的1秒、10毫秒等對應(yīng)的周期頻率關(guān)系,由1HZ的

28、信號控制計量模塊,由控制器選擇產(chǎn)生的信號作為計費模塊的輸入信號,所以計費模塊的輸入信號是13HZ、15HZ的信號之一,計量模塊每完成一次計數(shù),計費模塊完成13次或者15次計數(shù),即為實現(xiàn)1.3元或1.5元的計費。VHDL硬件描述語言和EDA基礎(chǔ)實驗教程是設(shè)計中對于各個模塊的設(shè)計是基礎(chǔ),首先要分析清楚各個模塊的功能,然后分別進行編程設(shè)計、驗證,然后使用VHDL語言中的元件例化語句,將各個模塊組合到一起,實現(xiàn)總的設(shè)計功能。在硬件實現(xiàn)過程中,當(dāng)進行等待計時計費時,發(fā)現(xiàn)計時很慢,初步分析是因為計時的驅(qū)動頻率不大,需要選擇256HZ以上的頻率;更改以后,計時正常,但同頻率下行駛計費速度較快,不便觀察,因此

29、要注意觀察的點和頻率的選擇。在本次設(shè)計當(dāng)中,本人成功實現(xiàn)了該設(shè)計的各個底層模塊的設(shè)計,而各個模塊使用了不同的硬件描述語言,有Verilog HDL和VHDL兩種。同時,與各個組員共同配合完成了設(shè)計等文章的書寫。在本次設(shè)計當(dāng)中,我學(xué)到了將理論與實踐相結(jié)合,同時與團隊的精神才是強大的,只有與各個組員共同配合才可能做出真正的電子設(shè)計。在這里,也要感謝××教授和××老師的不斷耐心指導(dǎo),才得以完成了本次的設(shè)計任務(wù)。所以,在這里非常感謝兩位老師的嚴(yán)謹細致、一絲不茍的作風(fēng)。老師循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪,這次課程設(shè)計的每個實驗細節(jié)和每個數(shù)據(jù),都離不

30、開老師您的細心指導(dǎo)。同時感謝對我?guī)椭^的同學(xué)們,謝謝你們對我的幫助和支持,讓我感受到同學(xué)的友誼。6參考文獻1譚會生、瞿遂春,EDA技術(shù)綜合應(yīng)用實例與分析,西安電子科技大學(xué)出版社,2004,P.201-2302高有堂,EDA技術(shù)及應(yīng)用實踐,清華大學(xué)出版社,2006,P.201-2303億特科技,CPLD/FPGA應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā),人民郵電出版社,2005,P.201-2304指導(dǎo)書 劉春陽 趙世彧,DA技術(shù)實踐,人民郵電出版社,2003,P.201-2305潘松 黃繼業(yè),EDA技術(shù)實用教程,科學(xué)出版社,2004,P.201-230附錄(主要底層模塊驅(qū)動)多位數(shù)據(jù)管軟件驅(qū)動:module s

31、eg( input i_clk, input i_rst_n, input 7:0 i_turn_off, / 熄滅位2進制 input 7:0 i_dp, / 小數(shù)點位2進制 input 31:0 i_data, / 欲顯數(shù)據(jù)16進制 output 7:0 o_seg, / 段腳 output 2:0 o_sel, / 使用74HC138譯出位腳 output o_cs / 74HC138選擇位);/+/ 分頻部分 開始/+reg 15:0 cnt; / 計數(shù)子always (posedge i_clk, negedge i_rst_n) if (!i_rst_n) cnt <= 0;

32、 else cnt <= cnt + 1'b1;wire seg7_clk = cnt15; / (216/25M = 2.6114)ms /-/ 分頻部分 結(jié)束/-/+/ 動態(tài)掃描, 生成seg7_addr 開始/+reg 2:0 seg7_addr; / 第幾個seg7always (posedge seg7_clk, negedge i_rst_n) if (!i_rst_n) seg7_addr <= 0; else seg7_addr <= seg7_addr + 1'b1; /-/ 動態(tài)掃描, 生成seg7_addr 結(jié)束/-/+/ 根據(jù)seg7_

33、addr, 譯出位碼 開始/+reg 2:0 o_sel_r; / 位選碼寄存器/ 開發(fā)板上SEG7的方向是低位在左,高位在右/ 但是實際上我們看數(shù)的方向是高位在左,低位在右/ 故此處將第0位對應(yīng)DIG7,第7位對應(yīng)DIG0always case (seg7_addr) 0 : o_sel_r = 3'b111; / SEG77 1 : o_sel_r = 3'b110; / SEG76 2 : o_sel_r = 3'b101; / SEG75 3 : o_sel_r = 3'b100; / SEG74 4 : o_sel_r = 3'b011; /

34、SEG73 5 : o_sel_r = 3'b010; / SEG72 6 : o_sel_r = 3'b001; / SEG71 7 : o_sel_r = 3'b000; / SEG70 endcase/-/ 根據(jù)seg7_addr, 譯出位碼 結(jié)束/-/+/ 根據(jù)seg7_addr, 選擇熄滅碼 開始/+reg turn_off_r; / 熄滅碼always case (seg7_addr) 0 : turn_off_r = i_turn_off0; 1 : turn_off_r = i_turn_off1; 2 : turn_off_r = i_turn_off

35、2; 3 : turn_off_r = i_turn_off3; 4 : turn_off_r = i_turn_off4; 5 : turn_off_r = i_turn_off5; 6 : turn_off_r = i_turn_off6; 7 : turn_off_r = i_turn_off7; endcase/-/ 根據(jù)seg7_addr, 選擇熄滅碼 結(jié)束/-/+/ 根據(jù)seg7_addr, 選擇小數(shù)點碼 開始/+reg dp_r; / 小數(shù)點碼always case (seg7_addr) 0 : dp_r = i_dp0; 1 : dp_r = i_dp1; 2 : dp_r

36、= i_dp2; 3 : dp_r = i_dp3; 4 : dp_r = i_dp4; 5 : dp_r = i_dp5; 6 : dp_r = i_dp6; 7 : dp_r = i_dp7; endcase/-/ 根據(jù)seg7_addr, 選擇小數(shù)點碼 結(jié)束/-/+/ 根據(jù)seg7_addr, 選擇待譯段碼 開始/+reg 3:0 seg_data_r; / 待譯段碼always case (seg7_addr) 0 : seg_data_r = i_data3:0; 1 : seg_data_r = i_data7:4; 2 : seg_data_r = i_data11:8; 3 :

37、 seg_data_r = i_data15:12; 4 : seg_data_r = i_data19:16; 5 : seg_data_r = i_data23:20; 6 : seg_data_r = i_data27:24; 7 : seg_data_r = i_data31:28; endcase/-/ 根據(jù)seg7_addr, 選擇待譯段碼 結(jié)束/-/+/ 根據(jù)熄滅碼/小數(shù)點碼/待譯段碼/ 譯出段碼,開始/+reg 7:0 o_seg_r; / 段碼寄存器/ 共陰always (posedge i_clk, negedge i_rst_n) if (!i_rst_n) o_seg_

38、r <= 8'h00; / 送熄滅碼 else if(turn_off_r) / 送熄滅碼 o_seg_r <= 8'h00; else if(!dp_r) case(seg_data_r) / 無小數(shù)點 4'h0 : o_seg_r <= 8'h3f; 4'h1 : o_seg_r <= 8'h06; 4'h2 : o_seg_r <= 8'h5b; 4'h3 : o_seg_r <= 8'h4f; 4'h4 : o_seg_r <= 8'h66; 4&#

39、39;h5 : o_seg_r <= 8'h6d; 4'h6 : o_seg_r <= 8'h7d; 4'h7 : o_seg_r <= 8'h07; 4'h8 : o_seg_r <= 8'h7f; 4'h9 : o_seg_r <= 8'h6f; 4'hA : o_seg_r <= 8'h77; 4'hB : o_seg_r <= 8'h7c; 4'hC : o_seg_r <= 8'h39; 4'hD : o_se

40、g_r <= 8'h5e; 4'hE : o_seg_r <= 8'h79; 4'hF : o_seg_r <= 8'h71; endcase else case(seg_data_r) / 加小數(shù)點 4'h0 : o_seg_r <= 8'h3f | 8'h80; 4'h1 : o_seg_r <= 8'h06 | 8'h80; 4'h2 : o_seg_r <= 8'h5b | 8'h80; 4'h3 : o_seg_r <= 8

41、'h4f | 8'h80; 4'h4 : o_seg_r <= 8'h66 | 8'h80; 4'h5 : o_seg_r <= 8'h6d | 8'h80; 4'h6 : o_seg_r <= 8'h7d | 8'h80; 4'h7 : o_seg_r <= 8'h07 | 8'h80; 4'h8 : o_seg_r <= 8'h7f | 8'h80; 4'h9 : o_seg_r <= 8'h6f | 8

42、'h80; 4'hA : o_seg_r <= 8'h77 | 8'h80; 4'hB : o_seg_r <= 8'h7c | 8'h80; 4'hC : o_seg_r <= 8'h39 | 8'h80; 4'hD : o_seg_r <= 8'h5e | 8'h80; 4'hE : o_seg_r <= 8'h79 | 8'h80; 4'hF : o_seg_r <= 8'h71 | 8'h80; en

43、dcase/-/ 根據(jù)熄滅碼/小數(shù)點碼/待譯段碼/ 譯出段碼,結(jié)束/-assign o_sel = o_sel_r; / 寄存器輸出位選碼assign o_seg = o_seg_r; / 寄存器輸出段碼assign o_cs = 1; / 寄存器輸出選擇endmodule4x4矩陣鍵盤軟件驅(qū)動:module matrixKeyboard_drive( i_clk, i_rst_n, row, / 矩陣鍵盤 行 col, / 矩陣鍵盤 列 keyboard_val , / 鍵盤值 key_pressed_flag); input i_clk; input i_rst_n; input 3:0

44、row; / 矩陣鍵盤 行 output reg 3:0 col; / 矩陣鍵盤 列 output reg 3:0 keyboard_val ; / 鍵盤值 output key_pressed_flag ;/+/ 分頻部分 開始/+reg 18:0 cnt; / 計數(shù)子always (posedge i_clk, negedge i_rst_n) if (!i_rst_n) cnt <= 0; else cnt <= cnt + 1'b1;wire key_clk = cnt18; / (219/25M = 21)ms /-/ 分頻部分 結(jié)束/-/+/ 狀態(tài)機部分 開始/

45、+/ 狀態(tài)數(shù)較少,獨熱碼編碼parameter NO_KEY_PRESSED = 6'b000_001; / 沒有按鍵按下 parameter SCAN_COL0 = 6'b000_010; / 掃描第0列 parameter SCAN_COL1 = 6'b000_100; / 掃描第1列 parameter SCAN_COL2 = 6'b001_000; / 掃描第2列 parameter SCAN_COL3 = 6'b010_000; / 掃描第3列 parameter KEY_PRESSED = 6'b100_000; / 有按鍵按下reg

46、 5:0 current_state, next_state; / 現(xiàn)態(tài)、次態(tài)always (posedge key_clk, negedge i_rst_n) if (!i_rst_n) current_state <= NO_KEY_PRESSED; else current_state <= next_state;/ 根據(jù)條件轉(zhuǎn)移狀態(tài)always * case (current_state) NO_KEY_PRESSED : / 沒有按鍵按下 if (row != 4'hF) next_state = SCAN_COL0; else next_state = NO_KEY_PRESSED; SCAN_COL0 : / 掃描第0列 if (row != 4'hF) next_state = KEY_PRESSED; else next_state = SCAN_COL1; SCAN_COL1 : / 掃描第1列 if (row != 4'hF) next_state = KEY_PRESSED; else next_state = SCAN_COL2; SCAN_COL2 : / 掃描第2列 if (row != 4'hF) next_state = KEY_PRES

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論