基于FPGA出租車(chē)計(jì)價(jià)器設(shè)計(jì)報(bào)告(LCD顯示).doc_第1頁(yè)
基于FPGA出租車(chē)計(jì)價(jià)器設(shè)計(jì)報(bào)告(LCD顯示).doc_第2頁(yè)
基于FPGA出租車(chē)計(jì)價(jià)器設(shè)計(jì)報(bào)告(LCD顯示).doc_第3頁(yè)
基于FPGA出租車(chē)計(jì)價(jià)器設(shè)計(jì)報(bào)告(LCD顯示).doc_第4頁(yè)
基于FPGA出租車(chē)計(jì)價(jià)器設(shè)計(jì)報(bào)告(LCD顯示).doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余19頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

CPLD/FPGA原理及應(yīng)用課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告題 目: 出租車(chē)計(jì)價(jià)器 院 (系): 信息科學(xué)與工程學(xué)院 專(zhuān)業(yè)班級(jí): 學(xué)生姓名: 學(xué) 號(hào): 指導(dǎo)教師: CPLD/FPGA原理及應(yīng)用課程設(shè)計(jì)任務(wù)書(shū)目 錄1前言1頁(yè)碼2課程設(shè)計(jì)目的2頁(yè)碼3課程設(shè)計(jì)題目描述和要求 2頁(yè)碼4課程設(shè)計(jì)報(bào)告內(nèi)容2頁(yè)碼4.1分屏模塊電路2頁(yè)碼4.2計(jì)程模塊電路3頁(yè)碼4.3計(jì)費(fèi)模塊電路4頁(yè)碼4.4LCD顯示屏的輸入時(shí)鐘電路 4頁(yè)碼4.5LCD顯示屏模塊電路 5頁(yè)碼5各模塊源代碼6頁(yè)碼5.1分頻模塊源代碼6頁(yè)碼5.2LCD分頻模塊源代碼 7頁(yè)碼5.3計(jì)程模塊源代碼8頁(yè)碼5.4計(jì)費(fèi)模塊電路9頁(yè)碼5.5LCD顯示模塊源代碼12頁(yè)碼6總結(jié)與體會(huì)18頁(yè)碼參考文獻(xiàn) 19頁(yè)碼(要求:目錄題頭用三號(hào)黑體字居中書(shū)寫(xiě),隔行書(shū)寫(xiě)目錄內(nèi)容。目錄中各級(jí)題序及標(biāo)題用小四號(hào)黑體)1.前言隨著出租車(chē)行業(yè)的發(fā)展,對(duì)出租車(chē)計(jì)費(fèi)器的要求也越來(lái)越高。最近幾年出租車(chē)行業(yè)發(fā)展迅速,在全國(guó)有幾千萬(wàn)家出租車(chē)公司。因此出租車(chē)計(jì)費(fèi)器市場(chǎng)是龐大的。而出租車(chē)計(jì)費(fèi)器成為不可缺少的一部分。出租車(chē)計(jì)價(jià)器是出租車(chē)營(yíng)運(yùn)收費(fèi)的專(zhuān)用智能化儀表,隨著電子技術(shù)的發(fā)展,出租車(chē)計(jì)價(jià)器技術(shù)也在不斷進(jìn)步和提高。國(guó)內(nèi)出租車(chē)計(jì)價(jià)器已經(jīng)經(jīng)歷了4 個(gè)階段的發(fā)展。從傳統(tǒng)的全部由機(jī)械元器件組成的機(jī)械式,到半電子式即用電子線(xiàn)路代替部分機(jī)械元器件的出租車(chē)計(jì)價(jià)器;再?gòu)募呻娐肥降侥壳暗膯纹瑱C(jī)系統(tǒng)設(shè)計(jì)的出租車(chē)計(jì)價(jià)器,以及FPGA計(jì)價(jià)器.出租車(chē)計(jì)價(jià)器計(jì)費(fèi)是否準(zhǔn)確,運(yùn)數(shù)據(jù)的管理是否方便都是人們最關(guān)注的。該計(jì)價(jià)器能實(shí)現(xiàn)按時(shí)間和里程綜合計(jì)算車(chē)價(jià),能顯示里程、總車(chē)價(jià)等相關(guān)信息顯示。信息社會(huì)的現(xiàn)代電子產(chǎn)品,性能越來(lái)越高,復(fù)雜度越來(lái)越大,更新步伐也越來(lái)越快。實(shí)現(xiàn)這種進(jìn)步的主要原因就是微電子技術(shù)和電子技術(shù)的發(fā)展。而電子技術(shù)的發(fā)展后者的核心就是電子設(shè)計(jì)自動(dòng)化技術(shù)。EDA是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開(kāi)發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語(yǔ)言HDL完成的設(shè)計(jì)文件,自動(dòng)完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局布線(xiàn)及仿真,直至完成對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。沒(méi)有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計(jì)制造是不可想象的;反過(guò)來(lái),生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對(duì)EDA技術(shù)提出新的要求。本設(shè)計(jì)采用Verilog HDL語(yǔ)言來(lái)設(shè)計(jì)實(shí)現(xiàn)出租車(chē)計(jì)費(fèi)系統(tǒng),具有良好的電路行為描述和系統(tǒng)描述的能力,并在語(yǔ)言易讀性和層次化、結(jié)構(gòu)化設(shè)計(jì)方面,表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。源程序經(jīng)ALTERA的Quartus II 9.0軟件調(diào)試優(yōu)化,通過(guò)下載到特定芯片后,可應(yīng)用于實(shí)際的出租車(chē)計(jì)費(fèi)系統(tǒng)中。本次課程設(shè)計(jì)鞏固和運(yùn)用了所學(xué)課程,通過(guò)理論聯(lián)系實(shí)際,提高了分析、解決技術(shù)實(shí)際問(wèn)題的獨(dú)立工作能力,通過(guò)對(duì)一個(gè)出租車(chē)計(jì)費(fèi)器的設(shè)計(jì),進(jìn)一步熟悉了數(shù)字電路系統(tǒng)設(shè)計(jì)、制作與調(diào)試的方法和步驟。12.課程設(shè)計(jì)目的1.學(xué)會(huì)在Quartus II環(huán)境中運(yùn)行VHDL語(yǔ)言設(shè)計(jì)方法構(gòu)建具有一定邏輯功能的模塊,并能運(yùn)用圖形設(shè)計(jì)方法完成頂層原理圖的設(shè)計(jì)。2.掌握出租車(chē)計(jì)價(jià)器的主要功能與在FPGA中的實(shí)現(xiàn)方法。3 設(shè)計(jì)題目和要求:1. 實(shí)現(xiàn)計(jì)費(fèi)功能。按行駛里程計(jì)費(fèi),車(chē)行駛后按1.0元/km計(jì)費(fèi),當(dāng)計(jì)費(fèi)器達(dá)到或超過(guò)20元時(shí),每千米加收50%的車(chē)費(fèi);2. 設(shè)計(jì)數(shù)碼管動(dòng)態(tài)掃描電路,將車(chē)費(fèi)和路程顯示出來(lái),有一位小數(shù)。3. 實(shí)現(xiàn)預(yù)置功能:能預(yù)置起步費(fèi)、每公里收費(fèi)、車(chē)行加費(fèi)里程。4. 用VHDL語(yǔ)言設(shè)計(jì)符合上述功能要求的出租車(chē)計(jì)費(fèi)器,并用層次化設(shè)計(jì)方法設(shè)計(jì)該電路。5. 完成電路全部設(shè)計(jì)后,通過(guò)實(shí)驗(yàn)下板載驗(yàn)證設(shè)計(jì)的正確性。4.課程設(shè)計(jì)報(bào)告內(nèi)容4.1 分頻模塊電路此模塊的功能是對(duì)總的時(shí)鐘進(jìn)行分頻,分出的頻率是讓計(jì)數(shù)器用的,因?yàn)榭偟臅r(shí)鐘是50M的。設(shè)計(jì)該模塊的時(shí)候用了一個(gè)32位的計(jì)數(shù)器,當(dāng)計(jì)數(shù)器計(jì)到25_000000的時(shí)候產(chǎn)生時(shí)鐘。在仿真的時(shí)候?yàn)榱丝焖俚姆奖阌^察,設(shè)計(jì)了一個(gè)50M分頻的電路。 4.2 計(jì)程模塊電路此模塊的功能是計(jì)算出租車(chē)行駛的路程。在出租車(chē)啟動(dòng)并行駛的過(guò)程中,當(dāng)時(shí)鐘clk是上升沿的時(shí)候,系統(tǒng)即對(duì)路程計(jì)數(shù)器km0,km1的里程計(jì)數(shù)器進(jìn)行加計(jì)數(shù)。其模塊如下:4.3 計(jì)費(fèi)模塊電路費(fèi)用計(jì)數(shù)器模塊用于出租車(chē)啟動(dòng)后,根據(jù)行駛路程和等待時(shí)間計(jì)算費(fèi)用。時(shí)間每滿(mǎn)1秒,費(fèi)用計(jì)數(shù)器加1元。行駛路程超過(guò)20公里按1.5元/km計(jì)費(fèi)4.4 LCD顯示屏的輸入時(shí)鐘電路此模塊的功能是對(duì)總的時(shí)鐘進(jìn)行分頻,分出的頻率是讓計(jì)數(shù)器用的,因?yàn)榭偟臅r(shí)鐘是50M的。設(shè)計(jì)該模塊的時(shí)候用了一個(gè)32位的計(jì)數(shù)器,當(dāng)計(jì)數(shù)器計(jì)到50的時(shí)候產(chǎn)生時(shí)鐘。在仿真的時(shí)候?yàn)榱丝焖俚姆奖阌^察,設(shè)計(jì)了一個(gè)100分頻的電路。4.5 LCD顯示屏模塊電路LCD的顯示有兩種顯示方式動(dòng)態(tài)顯示與靜態(tài)顯示,由于在本文中用到了LCD的靜態(tài)顯示和動(dòng)態(tài)顯示,在時(shí)鐘的控制下,當(dāng)CLK為高電平的時(shí)候把費(fèi)用,公里,時(shí)間譯碼輸出。4.6 整體頂層模塊電路以上單元模塊設(shè)計(jì)完畢,通過(guò)每個(gè)單元模塊代碼的設(shè)計(jì)以及仿真驗(yàn)證每個(gè)模塊的真確性,為確保后面整體模塊電路的正確性奠定了基礎(chǔ)。各模塊設(shè)計(jì)仿真實(shí)現(xiàn)后,可分別創(chuàng)建成元件符號(hào)。頂層就是將各分模塊用Verilog HDL語(yǔ)言或者是圖形方法連接起來(lái),便可實(shí)現(xiàn)系統(tǒng)電路。其Verilog HDL源代碼詳見(jiàn)其附錄。其生成的頂層原理圖如下所示:5單元模塊Verilog HDL源代碼5.1 計(jì)數(shù)器的分頻模塊VerilogHDL源代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pin1hz isport(clkin :instd_logic; reset: IN STD_LOGIC;clkout :outstd_logic);end pin1hz;architecture a of pin1hz isbeginprocess(clkin)variable cnttemp: integer range 0 to 49999999;beginif clkin=1 and clkinevent thenif cnttemp=49999999 then cnttemp:=0;elseif cnttemp25000000 then clkout=1;else clkout=0;end if;cnttemp:=cnttemp+1;end if;end if;end process;end a;5.2LCD的分頻模塊VerilogHDL源代碼LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PIN100K ISPORT(CLK_50M_IN: IN STD_LOGIC; CLK_100K_OUT: OUT STD_LOGIC);END PIN100K;ARCHITECTURE ARC OF PIN100K ISBEGINPROCESS(CLK_50M_IN)VARIABLE CNTTEMP : INTEGER RANGE 0 TO 499;BEGIN IF CLK_50M_IN =1AND CLK_50M_INEVENT THEN IF CNTTEMP=499 THEN CNTTEMP:=0; ELSE IF CNTTEMP250 THEN CLK_100K_OUT=1; ELSE CLK_100K_OUT =0; END IF; CNTTEMP:=CNTTEMP+1; END IF; END IF;END PROCESS;END ARC;5.3 計(jì)程模塊VerilogHDL源代碼LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY lichen IS PORT(CLK:IN STD_LOGIC; reset:IN STD_LOGIC; km0:out STD_LOGIC_VECTOR(3 DOWNTO 0); km1:out STD_LOGIC_VECTOR(3 DOWNTO 0);END lichen;ARCHITECTURE ART OF lichen ISsignal k0:STD_LOGIC_VECTOR(3 DOWNTO 0);signal k1:STD_LOGIC_VECTOR(3 DOWNTO 0);signal en :std_logic; BEGIN km0=k0; km1=k1;PROCESS(CLK,reset)BEGIN IF(reset=1)THEN -異步復(fù)位 k0=0000; k1=0000;ELSIF(CLKEVENT AND CLK=1)THEN IF(k0=9)THEN k0=0000; k1=k1+1; -計(jì)數(shù)功能的實(shí)現(xiàn) ELSE k0=k0+1; END IF;if k1=0001 and k0=1001 then en=1;end if; END IF; -END IF LOAD END PROCESS;END ART;5.4 計(jì)費(fèi)模塊VerilogHDL源代碼LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY jifei IS PORT(CLK:IN STD_LOGIC; reset:IN STD_LOGIC; char0:out STD_LOGIC_VECTOR(3 DOWNTO 0); char1:out STD_LOGIC_VECTOR(3 DOWNTO 0); char2:out STD_LOGIC_VECTOR(3 DOWNTO 0); char3:out STD_LOGIC_VECTOR(3 DOWNTO 0);END jifei;ARCHITECTURE behave OF jifei ISsignal c0,c1,c2,c3:STD_LOGIC_VECTOR(3 DOWNTO 0);signal en :std_logic;beginchar0=c0;char1=c1;char2=c2;char3=c3;PROCESS(reset,clk,en) BEGIN IF(reset=1)THEN -異步復(fù)位 c0=0000; c1=0000; c2 = 0000; c3 = 0000;ELSIF(CLKEVENT AND CLK=1)THEN IF en = 0 THEN -小于20公里時(shí),每公里1元 IF c1 = 1001 THEN c1 = 0000; IF c2 = 1001 THEN c2 = 0000; IF c3 = 1001 THEN c3 = 0000; ELSE c3 = c3+1; END IF; ELSE c2 = c2+1; END IF; ELSE c1= c1+1; END IF; ELSE -超過(guò)20公里,每公里1.5元 IF (c0 = 0101 AND c1 = 1000) OR c1 = 1001 THEN -等于XX9.5時(shí),累加得XX1.0 IF c1 = 1001 AND c0 = 0101 THEN c0 = 0000; c1 = 0001; -等于XX9.0時(shí),累加得XX0.5 ElSIF c1 = 1001 AND c0 = 0000 THEN c0 = 0101; c1 = 0000; -等于XX8.5時(shí),累加得XX0.0 ELSIF c1 = 1000 AND c0 = 0101 THEN c0 = 0000; c1 = 0000; END IF; IF c2 = 1001 THEN c2 = 0000; IF c3 = 1001 THEN c3 = 0000; ELSE c3 = c3 + 1; END IF; ELSE c2 = c2 + 1; END IF; ELSIF c0 = 0000 THEN c0 = 0101; c1 = c1 + 1; ELSE c0 = 0000; c1 = c1 + 0010; END IF; END IF; END IF; END PROCESS; END behave;5.5 LCD顯示模塊VerilogHDL源代碼-80H 81H 82H 83H 84H 85H 86H 87H-90H 91H 92H 93H 94H 95H 96H 97H-88H 89H 8AH 8BH 8CH 8DH 8EH 8FH-98H 99H 9AH 9BH 9CH 9DH 9EH 9FHlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use IEEE.STD_LOGIC_ARITH.ALL;entity clock_lcd_disp is port(clk:in std_logic; km0:in STD_LOGIC_VECTOR(3 DOWNTO 0); km1:in STD_LOGIC_VECTOR(3 DOWNTO 0) ; char0:in STD_LOGIC_VECTOR(3 DOWNTO 0); char1:in STD_LOGIC_VECTOR(3 DOWNTO 0); char2:in STD_LOGIC_VECTOR(3 DOWNTO 0); char3:in STD_LOGIC_VECTOR(3 DOWNTO 0); rw,rs,e,lcd_rst:out std_logic; lcd_data:out std_logic_vector(7 downto 0);end clock_lcd_disp;architecture tcl of clock_lcd_disp is type state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9); signal current_s:state; type data_buffer is array(0 to 15)of std_logic_vector(7 downto 0); type data_buffer0 is array(0 to 7)of std_logic_vector(7 downto 0); type data_buffer1 is array(0 to 7)of std_logic_vector(7 downto 0); signal disp_time0:data_buffer0:=(x31,x32,x3a,x33, x34,x3a,x35,x36); signal disp_time1:data_buffer1:=(x31,x32,x3a,x33, x34,x3a,x35,x36) ; constant data_buf0:data_buffer:=(x20,x20,x20,x20, xbc,xc6,xb3,xcc, xa1,xc3,x20,x20, xa2,xb2,x20,x20); constant data_buf1:data_buffer:=(x20,x20,x20,x20, xbc,xc6,xb7,xd1, xa1,xc3,x20,x20, xa2,xb2,x20,x20); begin disp_time0(7)=x20; disp_time0(6)=x20; disp_time0(5)=x20; disp_time0(4)=km0(3 DOWNTO 0)+x30; disp_time0(3)=km1(3 DOWNTO 0)+x30; disp_time0(2)=x20; disp_time0(1)=x20; disp_time0(0)=x20; disp_time1(7)=x20; disp_time1(6)=x20; disp_time1(5)=char0(3 DOWNTO 0)+x30; disp_time1(4)=x2e; disp_time1(3)=char1(3 DOWNTO 0)+x30; disp_time1(2)=char2(3 DOWNTO 0)+x30; disp_time1(1)=char3(3 DOWNTO 0)+x30; disp_time1(0)rw=1;rs=1;e=1;cnt1:=cnt1+1; if cnt1500 then lcd_rst=0; elsif cnt11000 then lcd_rst=1; elsif cnt1=1000 then lcd_rst=1;cnt1:=0;current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x0c; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x80; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=data_buf0(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=16 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x88; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=data_buf1(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=16 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x90; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=disp_time0(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=8 then current_scnt_1:=cnt_1+1; if cnt_11*3 then e=1;rs=0;rw=0; elsif cnt_12*3 then lcd_data=x98; elsif cnt_110*3 then e=0; elsif cnt_1=10*3 then cnt_1:=0;current_s if cnt_11*3 then e=1;rs=1;rw=0; elsif cnt_12*3 then lcd_data=disp_time1(data_cnt); elsif cnt_1=2*3 then data_cnt:=data_cnt+1; elsif cnt_1100 then e=0; end if; cnt_1:=cnt_1+1; if cnt_1=100 then cnt_1:=0; if data_cnt=8 then current_scurrent_s=s0; end case; end if;end process;end tcl;6.總結(jié)與體會(huì)通過(guò)學(xué)習(xí)了數(shù)字?jǐn)?shù)字系統(tǒng)設(shè)計(jì)和Verilog HDL語(yǔ)言,對(duì)EDA技術(shù)有了一些了解,但那厚厚的一本書(shū)講的都是理論的東西。通過(guò)這本次課程設(shè)計(jì),我才把學(xué)到的東西與實(shí)踐相結(jié)合。

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論