版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> EDA技術(shù)課程設(shè)計(jì)報(bào)告</p><p> 一、設(shè)計(jì)題目及要求:</p><p><b> 出租車計(jì)費(fèi)器</b></p><p> ?。?)具有行車?yán)锍逃?jì)費(fèi)、等待時(shí)間計(jì)費(fèi)、起價(jià)三部分,最大顯示金額99.99元</p><p> ?。?)起價(jià):三公里內(nèi)8元,等待時(shí)間超過(guò)10分鐘1元/10分鐘,行車?yán)?/p>
2、程單價(jià)1元,價(jià)格數(shù)值可修改。</p><p><b> 二、設(shè)計(jì)思路:</b></p><p> 首先用分頻模塊產(chǎn)生三個(gè)分頻,一個(gè)用來(lái)計(jì)算等到時(shí)間超過(guò)10分鐘時(shí)的價(jià)格,一個(gè)用來(lái)計(jì)算行車?yán)锍坛^(guò)三公里時(shí)的價(jià)格,還有一個(gè)用于計(jì)算等待時(shí)間以及行車?yán)锍?。用?jì)量模塊計(jì)算等待時(shí)間,若超過(guò)十分鐘,則使en1為1,否則為0,若行車?yán)锍坛^(guò)3公里,則使en0為1,否則為0。用控制模
3、塊根據(jù)en1和en0的值選擇計(jì)費(fèi)時(shí)鐘。用計(jì)費(fèi)模塊進(jìn)行計(jì)費(fèi)。最后用顯示模塊進(jìn)行8個(gè)數(shù)碼管的依次顯示。</p><p> 三、各個(gè)模塊的具體實(shí)現(xiàn):</p><p><b> 分頻模塊思路:</b></p><p> 輸入400HZ的時(shí)鐘,產(chǎn)生一個(gè)20分頻的時(shí)鐘(即20HZ)用來(lái)計(jì)算等待時(shí)間超過(guò)10分鐘時(shí)的0.1元/min;再產(chǎn)生一個(gè)2分頻的時(shí)
4、鐘(即200HZ)用來(lái)計(jì)算行車?yán)锍坛^(guò)三公里時(shí)的1元/公里。最后產(chǎn)生一個(gè)1HZ的時(shí)鐘,用做幾個(gè)子模塊的時(shí)鐘。</p><p> 1、分頻模塊的源程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_ari
5、th.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity fp is --分頻模塊</p><p><b> port(</b></p><p> clk_400:in std_logic;
6、 --輸入400HZ的時(shí)鐘</p><p> q2:out std_logic; --二分頻時(shí)鐘,用來(lái)計(jì)算里程超過(guò)3公里的價(jià)錢</p><p> q20:out std_logic; --二十分頻時(shí)鐘,用來(lái)計(jì)算等待時(shí)間超過(guò)10分鐘的價(jià)錢</p><p> q1:out std_logi
7、c); --幾個(gè)子模塊的時(shí)鐘</p><p><b> end fp;</b></p><p> architecture behav of fp is</p><p><b> begin</b></p><p> process(clk_400)</
8、p><p> variable count2:integer range 0 to 199;</p><p> variable count20:integer range 0 to 19;</p><p> variable count1 :integer range 0 to 399;</p><p><b> begin&
9、lt;/b></p><p> if clk_400'event and clk_400='1' then --上升沿檢測(cè)</p><p> if count2=199 --產(chǎn)生2分頻的時(shí)鐘</p><p> then count2:=0
10、;q2<='1';</p><p> else count2:=count2+1;q2<='0';</p><p><b> end if;</b></p><p> if count20=19 --產(chǎn)生20分頻的時(shí)鐘</p&
11、gt;<p> then count20:=0;q20<='1';</p><p> else count20:=count20+1;q20<='0';</p><p><b> end if;</b></p><p> if count1=399
12、 --產(chǎn)生子模塊的時(shí)鐘</p><p> then count1:=0;q1<='1';</p><p> else count1:=count1+1;q1<='0';</p><p><b> end if;</b></p><p><
13、;b> end if;</b></p><p> end process;</p><p> end behav;</p><p> 分頻模塊波形仿真圖:</p><p> clk_400是產(chǎn)生400HZ的脈沖,q1產(chǎn)生的是1HZ的脈沖,當(dāng)?shù)却龝r(shí)用來(lái)累計(jì)等待時(shí)間,當(dāng)行駛時(shí)用來(lái)累計(jì)行駛的路程;q2是一個(gè)兩分頻的脈沖,
14、產(chǎn)生200HZ的脈沖,相當(dāng)于是1元,用來(lái)計(jì)算超出3公里時(shí)的價(jià)錢,每公里1一元;q20是一個(gè)20分頻的脈沖,產(chǎn)生的是20HZ的脈沖,相當(dāng)于是0.1元,用來(lái)計(jì)算等待時(shí)間超過(guò)十分鐘時(shí)的價(jià)錢,每分鐘是0.1元。</p><p><b> 分頻模塊封裝形式:</b></p><p><b> 控制模塊思路:</b></p><p&g
15、t; 如果en1為1,則表示等待時(shí)間超過(guò)10分鐘,選擇20分頻的時(shí)鐘,clk_20;如果en0等于1,表示行車?yán)锍坛^(guò)3公里,選擇2分頻的時(shí)鐘,clk_2。</p><p> 2、控制模塊的源程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p>
16、; use ieee.std_logic_unsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity kongzhi1 is</p><p><b> port(</b></p><p> en0,en1:in std_logic;
17、 </p><p> clk_in20:in std_logic;</p><p> clk_in2:in std_logic;</p><p> clk_out:out std_logic</p><p><b> );</b></p><p> e
18、nd kongzhi1;</p><p> architecture behave of kongzhi1 is</p><p><b> begin</b></p><p> process(en0,en1)</p><p><b> begin</b></p><p&
19、gt; if en0='1' then --行車?yán)锍坛^(guò)3公里,選擇2分頻時(shí)鐘</p><p> clk_out<=clk_in2;</p><p> elsif en1='1' then --等待時(shí)間超過(guò)10分鐘,選擇20分頻時(shí)鐘</
20、p><p> clk_out<=clk_in20;</p><p><b> end if;</b></p><p> end process;</p><p> end behave;</p><p> 控制模塊的波形仿真圖:</p><p> en1=1,
21、選擇clk_20,表示0.1元/min;en0=1,選擇clk_2,表示1元/公里。</p><p> 控制模塊的封裝形式:</p><p> 3、計(jì)量模塊源程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> us
22、e ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity count is</p><p><b> port(</b></p><p> start:in std_logic;
23、 --start為1表示有出租車接到顧客 </p><p> stop:in std_logic; --stop為1表示開始等待</p><p> q1:in std_logic; --時(shí)鐘</p><p> en1,en0:buffer std_logic; --選擇信號(hào)</p&g
24、t;<p> k1,k0:buffer std_logic_vector(3 downto 0); --里程數(shù)k0是個(gè)位,k1是十位</p><p> m0,m1:buffer std_logic_vector(3 downto 0) --等待時(shí)間,m0是個(gè)位,m1是十位</p><p><b> );</b><
25、/p><p> end count;</p><p> architecture behav of count is</p><p> signal wt:integer range 0 to 59; --等待時(shí)間計(jì)時(shí),單位是秒</p><p><b> begin</b><
26、/p><p> process(q1)</p><p><b> begin</b></p><p> if q1'event and q1='1' then</p><p> if start='0'then --沒有顧客時(shí)清零
27、</p><p> wt<=0;en1<='0';en0<='0';m1<="0000";m0<="0000";</p><p> k1<="0000";</p><p> k0<="0000";</p
28、><p> elsif stop='1' then --開始等待</p><p> if wt=59 then wt<=0; --計(jì)時(shí)滿1秒</p><p> if m0="1001" then m0<="0000";
29、 --最大顯示59min</p><p> if m1="0101" then m1<="0000";</p><p> else m1<=m1+1;</p><p><b> end if;</b></p><p> else m0<=m0+1;<
30、/p><p><b> end if;</b></p><p> if m1&m0>"00001001"then en1<='1'; --等待時(shí)間超過(guò)10min,en1為1,否則為0</p><p> else en1<='0';</p><
31、p><b> end if;</b></p><p> else wt<=wt+1;en1<='0';</p><p><b> end if;</b></p><p> else if k0="1001"then k0<="0000"
32、; --開始計(jì)算里程數(shù),最大為99</p><p> if k1="1001" then k1<="0000";</p><p> else k1<=k1+1;</p><p><b> end if;</b></p><p> else k
33、0<=k0+1;</p><p><b> end if;</b></p><p> if k1&k0>"00000010"then en0<='1'; --如果里程數(shù)大于3公里,則en0為1,否則為0</p><p> else en1<='0';en
34、0<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p><p>
35、; end behav;</p><p> 計(jì)量模塊波形仿真圖:</p><p> Start為1,stop為1,表示開始等待,m1,m0,wt開始計(jì)時(shí),wt滿60s向m0進(jìn)1。</p><p> 仍然是在計(jì)時(shí),當(dāng)計(jì)時(shí)滿10min時(shí)en1為1</p><p> 當(dāng)stop為0時(shí),表示在行駛,k1,k0開始據(jù)算里程數(shù),當(dāng)計(jì)滿3公里時(shí),
36、en0為1。</p><p><b> 計(jì)量模塊封裝形式:</b></p><p> 4、計(jì)費(fèi)模塊源程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_u
37、nsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity money is</p><p><b> port(</b></p><p> clkout:in std_logic; --選擇好的時(shí)鐘&
38、lt;/p><p> start:in std_logic;</p><p> c0:buffer std_logic_vector(3 downto 0); --價(jià)格的十位</p><p> c1:buffer std_logic_vector(3 downto 0); --價(jià)格的個(gè)位</p><p> c2:buffe
39、r std_logic_vector(3 downto 0); --價(jià)格的小數(shù)點(diǎn)后第一位</p><p> c3:buffer std_logic_vector(3 downto 0) --價(jià)格的小數(shù)點(diǎn)后第二位</p><p><b> );</b></p><p> end money;</p><
40、p> architecture behav of money is</p><p><b> begin</b></p><p> process(start,clkout)</p><p><b> begin </b></p><p> if start='0't
41、hen --沒有顧客時(shí)清零</p><p> c0<="0000";</p><p> c1<="0000";</p><p> c2<="1000";</p><p> c3<="0000";</p
42、><p> elsif clkout'event and clkout='1'then --每來(lái)一個(gè)計(jì)費(fèi)脈沖就進(jìn)行一次計(jì)費(fèi)</p><p> if c3="1001"then</p><p> c3<="0000";</p><p> if c2="
43、;1001"then</p><p> c2<="0000";</p><p> if c1="1001"then</p><p> c1<="0000";</p><p> if c0="1001"then</p>&
44、lt;p> c0<="0000";</p><p> else c0<=c0+'1';</p><p><b> end if;</b></p><p> else c1<=c1+'1';</p><p><b> end i
45、f;</b></p><p> else c2<=c2+'1';</p><p><b> end if;</b></p><p> else c3<=c3+'1';</p><p><b> end if;</b></p>
46、<p><b> end if;</b></p><p> end process;</p><p> end behav;</p><p> 計(jì)費(fèi)模塊波形仿真圖:</p><p> start為1,開始計(jì)費(fèi),格式是:c0c1.c2c3,起步價(jià)是8元。</p><p>&
47、lt;b> 計(jì)費(fèi)模塊封裝形式:</b></p><p> 5、顯示部分源程序:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><
48、p> use ieee.std_logic_arith.all;</p><p> entity display1 is</p><p><b> port(</b></p><p> reset:in std_logic; --復(fù)位信號(hào)</p><p> q1 :in std
49、_logic; --時(shí)鐘信號(hào)</p><p> m0 :in std_logic_vector(3 downto 0); -等待時(shí)間</p><p> m1 :in std_logic_vector(3 downto 0);</p><p> k0 :in std_logic_vector(3 downto 0);
50、 --行駛公里</p><p> k1 :in std_logic_vector(3 downto 0); </p><p> c0 :in std_logic_vector(3 downto 0); --計(jì)費(fèi)值 </p><p> c1 :in std_logic_vector(3 downto 0); </p>&l
51、t;p> c2 :in std_logic_vector(3 downto 0);</p><p> c3 :in std_logic_vector(3 downto 0);</p><p> sel :out std_logic_vector(7 downto 0); --位選信號(hào) </p><p> show :out std_logi
52、c_vector(7 downto 0)); --數(shù)碼管顯示輸出</p><p> end display1;</p><p> architecture behav of display1 is</p><p> type state_type is(led1,led2,led3,led4,led5,led6,led7,led8);</p>
53、<p><b> --狀態(tài)機(jī)定義</b></p><p> signal pre_state,next_state:state_type; --信號(hào)定義</p><p> signal q :std_logic_vector(31 downto 0);</p><p> signal q_reg :std_
54、logic_vector(3 downto 0);</p><p> signal sel_reg:std_logic_vector(7 downto 0);</p><p> signal show_reg:std_logic_vector(6 downto 0);</p><p><b> begin</b></p>&
55、lt;p> q<=m1&m0&k1&k0&c3&c2&c1&c0;</p><p> present_state_register: --狀態(tài)寄存器</p><p> process(q1)</p><p><b> begin</b></p>&l
56、t;p> if reset=’0’ then</p><p> pre_state<=led1;</p><p><b> elsif</b></p><p> q1'event and q1='1' then pre_state<=next_state;</p><p>
57、;<b> end if;</b></p><p> end process;</p><p> process(reset,q1) --狀態(tài)機(jī)</p><p><b> begin</b></p><p> if reset=’0’ then</p>
58、<p> next_state<=led1;</p><p><b> elsif </b></p><p> q1'event and q1='1'then</p><p> case (next_state) is</p><p> when led1=>q_r
59、eg<=q(3 downto 0) ;sel_reg<="11111110";next_state<=led2; --第一個(gè)數(shù)碼管亮</p><p> when led2=>q_reg<=q(7 downto 4);sel_reg<="11111101";next_state<=led3; --第二個(gè)數(shù)碼管亮<
60、/p><p> when led3=>q_reg<=q(11 downto 8);sel_reg<="11111011";next_state<=led4; --第三個(gè)數(shù)碼管亮</p><p> when led4=>q_reg<=q(15 downto 12);sel_reg<="11110111"
61、;next_state<=led5; --第四個(gè)數(shù)碼管亮</p><p> when led5=>q_reg<=q(19 downto 16); sel_reg<="11101111";next_state<=led6; --第五個(gè)數(shù)碼管亮 </p><p> when led6=>q_reg&l
62、t;=q(23 downto 20); sel_reg<="11011111";next_state<=led7; --第六個(gè)數(shù)碼管亮</p><p> when led7=>q_reg<=q(27 downto 24); sel_reg<="10111111";next_state<=led8; --
63、第七個(gè)數(shù)碼管亮</p><p> when led8=>q_reg<=q(31 downto 28); sel_reg<="01111111";next_state<=led1; --第八個(gè)數(shù)碼管亮</p><p> when others=>q_reg<="11111111";sel_reg&
64、lt;="11111111";next_state<=led1;</p><p><b> --所有數(shù)碼管全滅</b></p><p><b> end case;</b></p><p><b> end if;</b></p><p> e
65、nd process;</p><p> with q_reg select --開始譯碼顯示</p><p> show_reg<="1000000"when"0000",</p><p> "1111001"when"0001",</p>
66、<p> "0100100"when"0010",</p><p> "0110000"when"0011",</p><p> "0011001"when"0100",</p><p> "0010010"w
67、hen"0101", </p><p> "0000010"when"0110",</p><p> "1011000"when"0111",</p><p> "0000000"when"1000", </p>
68、;<p> "0010000"when"1001",</p><p> "11111111"when others;</p><p> sel<=sel_reg;</p><p> show<='0'&show_reg when sel_reg=&q
69、uot;11111011"else '1'&show_reg; --計(jì)費(fèi)時(shí)使用小數(shù)點(diǎn),顯示c3c2.c1c0</p><p> end behav;</p><p> 顯示部分仿真波形圖:</p><p> reset 為1,sel輸出選擇的數(shù)碼管,“0”表示選中,show輸出顯示的信息。順序?yàn)閏0c1.c
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器
- eda課程設(shè)計(jì)--- 出租車計(jì)費(fèi)器
- eda課程設(shè)計(jì)---出租車計(jì)費(fèi)器設(shè)計(jì)
- eda 課程設(shè)計(jì)--出租車計(jì)費(fèi)器設(shè)計(jì)
- eda課程設(shè)計(jì)——出租車計(jì)費(fèi)器設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車自動(dòng)計(jì)費(fèi)器
- eda課程設(shè)計(jì)---出租車計(jì)費(fèi)器系統(tǒng)
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器的設(shè)計(jì)
- eda課程設(shè)計(jì)--出租車計(jì)費(fèi)器的設(shè)計(jì)
- eda出租車計(jì)費(fèi)器
- eda技術(shù)課程設(shè)計(jì)--出租車計(jì)費(fèi)器
- 出租車計(jì)費(fèi)器課程設(shè)計(jì)報(bào)告
- 出租車自動(dòng)計(jì)費(fèi)器課程設(shè)計(jì)
- 出租車計(jì)費(fèi)器課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)
- 出租車計(jì)費(fèi)器數(shù)字電子課程設(shè)計(jì)
- 出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)課程設(shè)計(jì)
- 出租車自動(dòng)計(jì)費(fèi)器設(shè)計(jì)課程設(shè)計(jì)
- 基于eda技術(shù)出租車計(jì)費(fèi)器設(shè)計(jì)樣本
- 數(shù)電課程設(shè)計(jì)-出租車自動(dòng)計(jì)費(fèi)器
評(píng)論
0/150
提交評(píng)論