【正文】
nd charge.Key woords: taximeter。而出租車計(jì)費(fèi)器是出租車上的一個(gè)重要儀器,它是乘客與司機(jī)雙方的公平交易準(zhǔn)則。驗(yàn)證結(jié)果具有計(jì)時(shí)、計(jì)里程、計(jì)費(fèi)等功能。而出租車計(jì)費(fèi)器是出租車內(nèi)重要的儀器之一,它能夠規(guī)范出租車市場,減小乘客與司機(jī)之間發(fā)生糾紛的可能性。而大規(guī)模集成電路的發(fā)展又給計(jì)費(fèi)器帶來了新的變化,產(chǎn)生了第三代計(jì)費(fèi)器,即全電子化的計(jì)費(fèi)器。目前常用的硬件描述語言有VHDL、 Verilog HDL 、ABEL等[2][3][4]。設(shè)計(jì)完成后,可以根據(jù)消耗的資源選擇合適的器件,而不造成資源的浪費(fèi)。當(dāng)把用VHDL編寫的代碼文件看作是程序時(shí),它可以作為設(shè)計(jì)人員之間的交流內(nèi)容;當(dāng)把它看作是文檔時(shí),可以作為簽約雙方的合同文本。(2)不能進(jìn)行太抽象的系統(tǒng)描述。Quartus II 內(nèi)帶有綜合器和仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程,減少了設(shè)計(jì)者的工作量。分頻部分是把外部提供的300Hz進(jìn)行分頻得到系統(tǒng)工作需要的工作脈沖,計(jì)費(fèi)部分包括兩個(gè)內(nèi)容,一個(gè)是正常行駛的里程數(shù)所產(chǎn)生的費(fèi)用,另一個(gè)是車行中途暫停的時(shí)間所產(chǎn)生的費(fèi)用。3 出租車計(jì)費(fèi)器的實(shí)現(xiàn) 出租車計(jì)費(fèi)器的頂層原理圖圖2 頂層原理圖原理圖中輸入部分分別是clk:系統(tǒng)時(shí)鐘信號(hào);mile:公里脈沖信號(hào);single:單程鍵;start:計(jì)費(fèi)器啟動(dòng)信號(hào);stop:等待信號(hào)。 模塊display:display_control圖4 顯示模塊顯示模塊用來將計(jì)費(fèi)模塊輸出譯碼,然后輪流掃描數(shù)碼管。圖12 驗(yàn)證結(jié)果2圖12表示汽車行駛25公里,在行駛20公里之后的一段時(shí)間內(nèi)停留4分鐘,符合設(shè)計(jì)要求。首先要感謝我的指導(dǎo)老師——陳初俠老師,在課程設(shè)計(jì)上給予我的指導(dǎo),提供給我的支持和幫助,讓我能把系統(tǒng)做得更加完善。entity taximeter is port(clk : in std_logic。architecture structural of taximeter is ponent taxi port(clk : in std_logic。計(jì)費(fèi)輸出十位 char3 : out std_logic_vector(3 downto 0)。 char1 : in std_logic_vector(3 downto 0)。 show : out std_logic_vector(7 downto 0))。 signal km0 : std_logic_vector(3 downto 0)。use 。計(jì)費(fèi)輸出個(gè)位 char2 : out std_logic_vector(3 downto 0)。 signal f_mile1 : std_logic。計(jì)費(fèi)寄存器 signal k0 : std_logic_vector(3 downto 0)。計(jì)費(fèi)時(shí)鐘begin 輸出顯示 min0 = m0。 分頻進(jìn)程 u1:process(clk) begin if rising_edge(clk) then if q=299 then q=0。139。 f_wait=39。139。 end if。 f_mile_r= f_mile1 and not(f_mile2)。039。 if k1=1001 then k1=0000。139。 end process。 c3=0000。 end if。 c1=0001。 else c3=c3+39。139。顯示模塊的VHDL編程:library ieee。 char3 : in std_logic_vector(3 downto 0)。architecture rtl of display is signal q : std_logic_vector(31 downto 0)。 char3 amp。 else sel_reg=sel_reg+1。 when 100=q_reg=q(19 downto 16)。 with q_reg select show_reg = 0111111 when 0000, 0000110 when 0001, 1011011 when 0010, 1001111 when 0011, 1100110 when 0100, 1101101 when 0101, 1111101 when 0110, 0000111 when 0111, 1111111 when 1000, 1101111 when 1001, 0000000 when others。end rtl。139。 when 110=q_reg=q(27 downto 24)。 end if。 char1 amp。 signal sel_reg : std_logic_vector(2 downto 0)。 min1 : in std_logic_vector(3 downto 0)。use 。 c1=c1+0010。 end if。 c1=0000。139。039。139。 單程且大于20公里,使能有效 if k1=0001 and k0=1001 and single=39。139。 k1=0000。139。 end process。 else f_wait=39。 if m0=1001 then m0=0000。039。 end if。 km0 = k0。公里寄存器 signal m1 : std_logic_vector(3 downto 0)。延遲時(shí)間 signal f_mile_r : std_logic。計(jì)費(fèi)輸出百位 min0 : out std_logic_vector(3 downto 0)。輸入300Hz時(shí)鐘 start : in std_logic。 begin charge_control:taxi port map(clk = clk, start = start, stop = stop, mile = mile, single = single, char0 = char0, char1 = char1, char2 = char2, char3 = char3, min0 = min0, min1 = min1, km0 = km0, km1 = km1)。 signal char0 : std_logic_vector(3 downto 0)。 char3 : in std_logic_vector(3 downto 0)。等待時(shí)間輸出個(gè)位 min1 : out std_logic_vector(3 downto 0)。 stop : in std_logic。計(jì)費(fèi)器啟動(dòng) stop : in std_logic。其次,我要感謝幫助過我的同學(xué)們,他們也為我解決