版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、可編程邏輯器件的電路設計課程設計報告出租車計價器的FPGA實現摘要隨著公共交通的發(fā)展和社會經濟、科技的進步,越來越多的人會選擇出租車作為出行方式,出租車行業(yè)發(fā)展迅速。這無形中創(chuàng)造了一個巨大的出租車計價器市場,但用戶對出租車計價器的要求也越來越高。特別是要求計價器性能穩(wěn)定,計費準確,操作方便,可靠性高。這就要求數字電路具有優(yōu)良的性能、穩(wěn)定性和可靠性?;贔PGA并用VHDL語言設計的EDA技術正好滿足了這一巨大的市場需求。EDA(電子設計自動化)技術作為現代電子設計技術的核心,依賴于功能強大的計算機。在EDA工具軟件平臺上,以硬件描述語言作為系統邏輯描述手段完成的設計文檔,可以自動完成邏輯化簡、
2、邏輯劃分、邏輯綜合(布局布線)、邏輯優(yōu)化和仿真等。,直到實現具有既定性能的電子電路系統功能。EDA技術使得設計人員的工作幾乎局限于使用軟件的方式,即使用硬件描述語言HDL和EDA軟件來完成系統硬件功能的實現。FPGA(現場可編程門陣列)是實現ASIC目標的主流器件。它直接面向用戶,具有極大的靈活性和通用性,易于使用,硬件測試和實現速度快,開發(fā)效率高,成本低,上市時間短,技術維護簡單,工作可靠性好。VHDL(超高速集成電路硬件描述語言)由美國國防部發(fā)起并創(chuàng)建。時至今日,它已經成為電子設計的主流硬件描述語言之一。1本設計基于FPGA開發(fā)平臺。在Quartus和Maxplus電子設計軟件開發(fā)平臺上,
3、完成了出租車計費電路的VHDL文本輸入方式設計和硬件功能實現。首先,本報告比較和選擇了不同的設計和實施方案;然后,將系統劃分為不同的模塊。從底層文件開始,進行了各模塊的端口介紹和功能分析,并給出了計算機仿真的分析結果。然后對頂層文件進行了分析,給出了系統的最終綜合和仿真結果,并用頂層設計的方法對頂層文件的功能進行了分析。最后對硬件驗證結果進行了分析。關鍵詞:出租車計價器,出租車計價器FPGA VHDL EDA目錄 TOC o 1-3 h z u HYPERLINK l _RefHeading_Toc281250303 1.方案比較與選擇4 HYPERLINK l _RefHeading_Toc
4、281250304 1.1出租車計費器的設計目標4 HYPERLINK l _RefHeading_Toc281250305 1.2基本設計方案思想4 HYPERLINK l _RefHeading_Toc281250306 1.2.1方案一4 HYPERLINK l _RefHeading_Toc281250307 1.2.2方案二6 HYPERLINK l _RefHeading_Toc281250308 1.2.3方案的選擇7 HYPERLINK l _RefHeading_Toc281250309 2底層文件的仿真與分析8 HYPERLINK l _RefHeading_Toc2812
5、50310 2.1計程模塊8 HYPERLINK l _RefHeading_Toc281250311 2.1.1功能介紹8 HYPERLINK l _RefHeading_Toc281250312 2.1.2端口介紹8 HYPERLINK l _RefHeading_Toc281250313 2.1.3綜合電路圖9 HYPERLINK l _RefHeading_Toc281250314 2.1.4仿真波形圖10 HYPERLINK l _RefHeading_Toc281250315 2.1.5仿真分析10 HYPERLINK l _RefHeading_Toc281250316 2.2狀
6、態(tài)機控制模塊11 HYPERLINK l _RefHeading_Toc281250317 2.2.1功能介紹11 HYPERLINK l _RefHeading_Toc281250318 2.2.2端口介紹11 HYPERLINK l _RefHeading_Toc281250319 2.2.3綜合電路圖12 HYPERLINK l _RefHeading_Toc281250320 2.2.4仿真波形圖13 HYPERLINK l _RefHeading_Toc281250321 2.2.5仿真分析13 HYPERLINK l _RefHeading_Toc281250322 2.3計費模塊
7、13 HYPERLINK l _RefHeading_Toc281250323 2.3.1功能介紹13 HYPERLINK l _RefHeading_Toc281250324 2.3.2端口介紹14 HYPERLINK l _RefHeading_Toc281250325 2.3.3綜合電路圖15 HYPERLINK l _RefHeading_Toc281250326 2.3.4仿真波形圖16 HYPERLINK l _RefHeading_Toc281250327 2.3.5仿真分析16 HYPERLINK l _RefHeading_Toc281250328 2.4譯碼模塊17 HYP
8、ERLINK l _RefHeading_Toc281250329 2.4.1功能介紹17 HYPERLINK l _RefHeading_Toc281250330 2.4.2端口介紹17 HYPERLINK l _RefHeading_Toc281250331 2.4.3綜合電路圖18 HYPERLINK l _RefHeading_Toc281250332 2.4.4仿真波形圖19 HYPERLINK l _RefHeading_Toc281250333 2.4.5仿真分析19 HYPERLINK l _RefHeading_Toc281250334 2.5溢出處理模塊20 HYPERLI
9、NK l _RefHeading_Toc281250335 2.5.1功能介紹20 HYPERLINK l _RefHeading_Toc281250336 2.5.2端口介紹20 HYPERLINK l _RefHeading_Toc281250337 2.5.3綜合電路圖20 HYPERLINK l _RefHeading_Toc281250338 2.5.4仿真波形圖21 HYPERLINK l _RefHeading_Toc281250339 2.5.5仿真分析21 HYPERLINK l _RefHeading_Toc281250340 3頂層文件仿真與分析22 HYPERLINK
10、l _RefHeading_Toc281250341 3.1計數器模塊頂層文件22 HYPERLINK l _RefHeading_Toc281250342 3.1.1功能分析22 HYPERLINK l _RefHeading_Toc281250343 3.1.2端口介紹22 HYPERLINK l _RefHeading_Toc281250344 3.1.3綜合電路圖23 HYPERLINK l _RefHeading_Toc281250345 3.1.4仿真波形圖23 HYPERLINK l _RefHeading_Toc281250346 3.1.5仿真分析24 HYPERLINK l
11、 _RefHeading_Toc281250347 3.2總體頂層文件仿真與分析25 HYPERLINK l _RefHeading_Toc281250348 3.2.1功能介紹25 HYPERLINK l _RefHeading_Toc281250349 3.2.2端口介紹25 HYPERLINK l _RefHeading_Toc281250350 3.2.3綜合電路圖26 HYPERLINK l _RefHeading_Toc281250351 3.2.4仿真波形圖26 HYPERLINK l _RefHeading_Toc281250352 3.2.5仿真分析26 HYPERLINK
12、l _RefHeading_Toc281250353 4硬件驗證分析27 HYPERLINK l _RefHeading_Toc281250354 4.1總述27 HYPERLINK l _RefHeading_Toc281250355 4.2引腳分配27 HYPERLINK l _RefHeading_Toc281250356 4.3硬件驗證過程與現象28 HYPERLINK l _RefHeading_Toc281250357 5課程設計心得29 HYPERLINK l _RefHeading_Toc281250358 5.1蔡偉龍的心得29 HYPERLINK l _RefHeading
13、_Toc281250359 5.2慕的心得29 HYPERLINK l _RefHeading_Toc281250360 5.3黃德龍的心得30 HYPERLINK l _RefHeading_Toc281250361 6 The FPGA Realization of a Taxi Meter31 HYPERLINK l _RefHeading_Toc281250362 7參考文獻33 HYPERLINK l _RefHeading_Toc281250363 8附錄34 HYPERLINK l _RefHeading_Toc281250364 8.1方案一實現代碼34 HYPERLINK l
14、 _RefHeading_Toc281250365 8.1.1計程模塊distance_counter.vhd34 HYPERLINK l _RefHeading_Toc281250366 8.1.2狀態(tài)機模塊state_machine.vhd35 HYPERLINK l _RefHeading_Toc281250367 8.1.3計費模塊counter_fare.vhd36 HYPERLINK l _RefHeading_Toc281250368 8.1.4計數器頂層模塊counter.vhd38 HYPERLINK l _RefHeading_Toc281250369 8.1.5譯碼顯示模
15、塊counter_display.vhd39 HYPERLINK l _RefHeading_Toc281250370 8.1.6溢出處理模塊overflow.vhd42 HYPERLINK l _RefHeading_Toc281250371 8.1.7總體頂層模塊counter_of_taxi_fare.vhd43 HYPERLINK l _RefHeading_Toc281250372 8.2方案二實現過程簡介與代碼44 HYPERLINK l _RefHeading_Toc281250373 8.2.1系統的構成44 HYPERLINK l _RefHeading_Toc2812503
16、74 8.2.2VHDL實現源代碼471.方案比較和選擇1.1出租車計價器的設計目標實際的出租車費用根據距離主要分為三段:汽車開始充電。首先顯示起步價(該設計起步價為7.00元),汽車行駛3km時起步價僅為7.00元。行駛超過3km后,按照每公里2.2元計費(在7.00元的基礎上,每公里票價加2.2元),依次累加票價。行程達到或超過9公里(票價達到20元)后,每公里收取50%的票價,開始時每公里收取3.3元的票價。汽車臨時停車(闖紅燈或中途停車)不收費,票價不變。如果停了,車費會被清零,等待下一次計費。1.2基本設計思想選項1設計理念根據出租車計價器的計費原理,首先設計了一個有四種狀態(tài)的有限狀
17、態(tài)機,分別對應停止和暫停,行駛距離為03km,行駛距離為39km,行駛距離大于9km。通過距離計數模塊輸出的距離數據,在主控組合過程中實現各個狀態(tài)的轉換。每個狀態(tài)的外部輸出值用于實現充電控制器對累計費用值的控制(判斷充電是以2.2元/km還是3.3元/km為單位)。設計出租車計價器模塊。有16位二進制輸出數據,分別對應四個距離顯示的數碼管數據。每個4位二進制數可以看作一個十進制數,對應一個數碼管。十進制計數以4位二進制數為單位進行,顯示單位為00.00公里。設計計費模塊。有16位二進制輸出數據,分別對應計費顯示的4個數碼管數據。二進制數每4位可視為一個十進制數,對應一個數碼管。以二進制數的4位
18、為單位進行小數計數,顯示單位為00.00元。本設計以100米為充電距離單位,根據狀態(tài)機在不同狀態(tài)下輸出的數據確定充電里程單價。設計計數器頂層文件。負責連接兩個計數器模塊。設計溢出處理模塊。因為距離顯示和計費顯示都設置為00.00(公里或元),而且顯示只能限制4個數碼管。因此,設計了溢出處理模塊來處理溢出情況,并將溢出輸出到某個單元的二極管進行顯示。設計解碼模塊。解碼模塊負責控制距離計數和計費數據輸出到74LS138芯片,用顯示刷新時鐘控制每個數碼管的顯示。設計頂層文檔。負責連接桌面文件、溢出處理模塊和解碼模塊。方案設計框圖日志模塊狀態(tài)機時鐘信號輸入距離測量脈沖輸入計費模塊10米進位脈沖距離分段
19、狀態(tài)狀態(tài)信號解碼模塊費用信號顯示時鐘距離高位進位溢出處理模塊高位輸出顯示LED8位數碼管輸出顯示圖1-1方案一出租車計價器系統設計模塊框圖方案的優(yōu)勢和創(chuàng)新分析整個系統由狀態(tài)機控制,帶來高效的時序控制,性能穩(wěn)定,狀態(tài)轉換速度快,可靠性高。有一個不錯的溢出處理模塊。選項2設計理念總體來說:距離計數模塊用于計算行駛距離,收費模塊用于計算車費。這兩個模塊由重啟和暫停開關控制,解碼和輸出模塊用于輸出結果。距離計數模塊。有16位二進制輸出數據,分別對應4個距離顯示的數碼管數據。每個4位二進制數可以看作一個十進制數,對應一個數碼管。以4位二進制數為單位進行十進制計數,顯示單位為00.00公里。通過累積clk
20、來增加距離。計費模塊。有16位二進制輸出數據,分別對應計費顯示的4個數碼管數據。二進制數每4位可視為一個十進制數,對應一個數碼管。以二進制數的4位為單位進行小數計數,顯示單位為00.00元。本設計以100米為充電距離單位,通過判斷行駛的公里數來確定當前的充電單價。解碼輸出模塊。當前距離和票價數據輸出到74LS138芯片,用掃描時鐘控制每個數碼管的顯示。頂層文件。負責連接三個模塊。系統設計框圖圖1-2方案二出租車計價器系統設計模塊框圖該方案的優(yōu)點和缺點系統的設計文檔總量較小。計數器采用的進位思想簡單新穎,適合多位計數。最大范圍是99.99,超出范圍的情況不處理。1.2.3方案選擇方案二的設計思路
21、雖然新穎、簡潔、獨特,但方案一由于處理全面,將是本次設計中的最終實施方案。由于方案2的優(yōu)點,我們在附錄中附上了方案2的設計過程和VHDL源代碼。2模擬和分析底層文件2.1日志模塊2.1.1功能介紹將測距信號作為儀表模塊中計數器的計數時鐘(本設計中時鐘信號作為模擬測距信號)進行計數。總共16個二進制數字用于計數。每4位數字可視為一個獨立的十進制數字,與數碼管顯示的每一位數字相對應。每4位以十進制方式計數(即從“0000”到“1001”),然后進位到更高的4位,以此類推。2.1.2端口介紹該模塊有7個端口(4個輸入端口和3個輸出端口)。清除信號clr(輸入端口):類型為標準邏輯位。當它處于高電平“
22、1”時,執(zhí)行復位操作。當它是低電平“0”時,執(zhí)行數據保持。計數使能信號en(輸入端口):類型為標準邏輯位。當它是高電平“1”時,計數無效。當它是低電平“0”時,充電有效。設置數字控制信號負載(輸入端口):類型為標準邏輯位。當它處于高電平“1”時,它會將0設置為16位輸出二進制數。當它處于低電平“0”時,它將正常工作。時鐘clk(輸入端口):類型為標準邏輯位。作為測距信號的計數時鐘,當使能信號、置位信號和清零信號滿足條件時,距離的“00.0*”中的“*”在時鐘的上升沿加1。日志數據輸出信號dout(輸出端口):16位標準邏輯位向量。輸出滑行的數據結果。測井數據輸出信號4位二進制數(輸出端口)單位
23、km:類型為4位標準邏輯位向量。向外輸出測井數據中“0 x . 00”x的部分,即以公里為單位的部分。狀態(tài)機狀態(tài)轉換的判斷信號。十米進位信號cout0(輸出端口):類型為1位標準邏輯位。一個觸發(fā)時鐘,用于計費模塊進行計費,以累計計量的單價。十公里進位信號cout1(輸出端口):類型為一個標準邏輯位。用于實現擴展功能。綜合電路圖圖2-1-1測井模塊的RTL圖圖2-1-2出租車計價器模塊綜合組件圖2.1.4模擬波形圖圖2-1-3復位使能設置信號的測試模擬圖2-1-4模擬十進制進位測試和進位信號測試圖2-1-5整體模擬測試模擬分析通過reset enable置位信號測試的仿真波形圖可以看出,rese
24、t信號clr和置位信號load是異步的,不受電表時鐘控制。清除信號clr和置位信號load具有類似的效果。當它們達到高電平“1”時,輸出的16個二進制數據信號同時全部置零,然后當高電平變?yōu)榈碗娖綍r開始計數。當它們處于低電平“0”時,它們處于正常計數狀態(tài),并保持上次計數的數據。這說明清零信號clr和置位信號load達到了我們的預期效果。通過十進制進位測試和進位信號測試的仿真圖,我們可以清楚地看到,當計數數據輸出的16位標準邏輯位向量dout的計數變化“0009”(以十六進制表示)時,在下一個計數脈沖到來時會變?yōu)椤?010”,當dout等于“009”時,計數十米進位信號cout0會有一個負脈沖跳變
25、。對十進制進位和進位信號的測試和仿真達到了預期的效果。通過整體仿真圖我們可以看到,對數計數模塊可以順利地完成清零、使能控制、設置、十進制進位、輸出進位信號等功能。2.2狀態(tài)機控制模塊2.2.1功能介紹電表測量脈沖作為觸發(fā)時鐘,電表輸出的4位二進制公里數作為狀態(tài)機狀態(tài)轉換方向的控制信號。根據距離的變化,將狀態(tài)機的狀態(tài)傳遞給計費模塊,使得計費模塊可以根據距離測量單價的變化。2.2.2端口介紹時鐘clk(輸入端口):類型為標準邏輯位。用于輸入電表測量的脈沖信號,作為狀態(tài)機的時鐘。清除信號停止(輸入端口):類型為標準邏輯位。狀態(tài)的復位控制是異步的。暫停信號(輸入端口):類型為標準邏輯位。用于停止計量和
26、充電以及停止狀態(tài)機轉換的控制信號。起始信號(輸入端口):類型為標準邏輯位。用于開始計量收費狀態(tài)的初始設置。日志數據輸入的距離:4位標準邏輯位向量。用于根據出租車計價器公里數的4位二進制數和不同出租車計價器單價的區(qū)間來確定狀態(tài)的轉折。狀態(tài)數據輸出數據輸出(輸出端口):一個2位標準邏輯位向量。用于向計費模塊輸出當前狀態(tài)(current status),以便計費模塊根據距離調整米單價。綜合電路圖圖2-2-1狀態(tài)機模塊的RTL圖圖2-2-2狀態(tài)機模塊的狀態(tài)轉換圖圖2-2-3狀態(tài)機模塊綜合組件圖2.2.4模擬波形圖圖2-2-4測試模擬啟動信號和復位控制信號圖2-2-5狀態(tài)機模塊的整體測試模擬模擬分析從啟
27、動信號和復位控制信號的測試仿真圖可以看出,只有當啟動信號開始向狀態(tài)機輸入正脈沖時,狀態(tài)機才會開始工作。同時可以看出,當清零信號stop向狀態(tài)機輸出正脈沖時,狀態(tài)機從其他工作狀態(tài)轉移到初始狀態(tài)st0。仿真結果符合預期。從狀態(tài)機模塊的測試仿真圖可以看出,當dout為3(“0011”)或9(“1001”)時,狀態(tài)機會產生狀態(tài)躍遷,輸出代表該狀態(tài)的信號。從仿真結果可以看出,仿真結果符合預期。2.3計費模塊2.3.1功能介紹以出租車計價器模塊的cout0(十米進位)信號為工作時鐘,根據狀態(tài)機模塊發(fā)送的狀態(tài)信號確定當前出租車計價器單價,然后利用十進制計數器的原理,每四個二進制位(共16個二進制位)累加進位
28、。然后,16位二進制代碼被輸出到解碼模塊。2.3.2端口介紹工作時鐘clk(輸入端口):類型為標準邏輯位。計量模塊的十進制輸出信號cout0用作該模塊的工作時鐘。清除信號clr(輸入端口):類型為標準邏輯位。當復位信號為高電平“1”時,所有輸出的16位二進制數字被復位。低電平時,計費計數正常工作。設置信號負載(輸入端口):類型為標準邏輯位。當數字信號為高電平“1”時,輸出的16位二進制數設置為“00000”,即十進制“0-7-0-0”。低電平時,計費計數正常工作。工作使能信號en(輸入端口):類型為標準邏輯位。低電平時,處于正常充電計數工作狀態(tài)。當為高電平時,計費計數暫停。輸入數據in(輸入端
29、口):類型2的標準邏輯位向量。當其輸入為“00”時,表示行駛距離處于0km以上3km以下的狀態(tài)。當其輸入為“01”時,表示行駛距離大于3km且小于等于9km。當其輸入為“10”時,表示行駛距離大于9km。計費數據輸出dout(輸出端口):16位標準邏輯位向量。用于將計費數據輸出到解碼模塊進行顯示。充電高溢出處理信號cout(輸出端口):類型為標準邏輯位。用于將計費溢出發(fā)送給溢出處理模塊進行處理。綜合電路圖圖2-3-1計費模塊的RTL圖圖2-3-2計費模塊綜合組件圖2.3.4模擬波形圖圖2-3-3復位信號、工作使能信號和置位信號的測試模擬圖2-3-4綜合測試模擬計費模塊模擬分析從復位信號、工作使
30、能信號和置位信號的測試仿真圖可以看出,當復位信號clr為高電平時,輸出的16位二進制數字信號全部清零。當使能信號en為高電平時,工作時鐘不驅動充電計數器進行充電計數,即充電計數暫停。當設置信號為正脈沖時,輸出的16位二進制數字信號設置為“00000”(圖中“0700”為十六進制)。仿真波形圖的結果符合設計預期。從計費模塊的綜合測試仿真圖可以看出,當狀態(tài)輸入信號datain為“00”時,計費輸出數據狀態(tài)保持在“0700”(十六進制);而當datain只有“01”時,以0.22元/100米(2.2元/km)開始收費(實際是以“000000000100010”為單位累計);當datain為“10”時
31、,按0.33元/百米(3.3元/公里)計費(實際以“00000000110011”為單位累計)。仿真達到了設計預期。2.4解碼模塊2.4.1功能介紹解碼模塊定義了一個狀態(tài)機,用來控制74LS138芯片高速穩(wěn)定地分配各個數碼管的顯示輸出。使用一個高頻時鐘作為顯示刷新時鐘,用來控制狀態(tài)機的狀態(tài)轉換(每個數碼管顯示定義為一個狀態(tài))。2.4.2端口介紹顯示時鐘clk(輸入端口):類型為標準邏輯位。連接到高頻時鐘信號源。用于解碼顯示時數碼管的轉換控制。測井數據輸入distance_in(輸入端口):類型為16位標準邏輯位向量。連接到計量模塊的計量數據輸出端口。作為距離顯示數據的輸入。計費數據輸入fare
32、_in(輸入端口):16位標準邏輯位向量。連接到計費模塊的計費數據輸出端口。作為計費顯示數據的輸入。顯示輸出led7(輸出端口):類型為8位標準邏輯位向量。將顯示數據發(fā)送到74LS138數據選擇器進行數據顯示和輸出。門輸出ls138(輸出端口):類型為3位標準邏輯位向量。選通數據送到74LS138,用于選擇數碼管的顯示。圖2-4-1七段數碼管解碼表2.4.3綜合電路圖圖2-4-2解碼模塊的RTL圖圖2-4-3解碼模塊狀態(tài)機的狀態(tài)轉移圖圖2-4-4解碼模塊綜合組件圖2.4.4模擬波形圖圖2-4-5解碼模塊綜合測試模擬模擬分析從解碼模塊的綜合測試仿真圖可以看出,解碼模塊用顯示器工作時鐘進行狀態(tài)轉換
33、,將數據分配到各個bit 7段數碼管進行解碼顯示。2.5溢出處理模塊2.5.1功能介紹溢出指示器的顯示由計量模塊和計費模塊的高溢出輸出控制。2.5.2端口介紹儀表溢出信號輸入distance_cout(輸入端口):類型為標準邏輯位。連接到對數計數模塊的10km進位在超過100km時會向LED輸出高電平,使其亮起。溢出信號輸入fare_cout(輸入端口):類型為標準邏輯位。連接計數器的高位溢出輸出信號,當計費模塊的最高位為“1001”時,產生一個負脈沖信號。LED顯示輸出light0light3(輸出端口):類型為標準邏輯位。用于輸出表示溢出數據的顯示。綜合電路圖圖2-5-1溢出模塊的RTL圖
34、圖2-5-2溢出模塊綜合組件圖2.5.4模擬波形圖圖2-5-3溢出處理模塊整體測試模擬圖模擬分析從溢出處理模塊的整體測試仿真圖可以看出,當計費計數模塊的高位數據溢出時,會通過fare_cout給出一個負脈沖信號。此時light0會從低電平跳到高電平點亮第一個LED。如果溢出,它會點亮燈1,然后點亮燈2。距離溢出時僅點亮3盞燈??梢钥闯?,仿真結果符合設計預期。3頂層文件模擬和分析3.1計數器模塊的頂層文件功能分析連接底層電表模塊、計費模塊和狀態(tài)機模塊。3.1.2端口介紹儀表時鐘clk_counter(輸入端口):類型為標準邏輯位。作為底層文件的工作時鐘。清除信號停止(輸入端口):類型為標準邏輯位
35、。作為底層計數器和狀態(tài)機的清零控制,當處于高電平時,所有計數器清零,狀態(tài)機跳轉到初始狀態(tài)st0。暫停信號(輸入端口):類型為標準邏輯位。高電平時底層所有計數器暫停,高電平時正常工作。初始化設置信號start(輸入端口):類型為標準邏輯位。當其處于高電平時,底部計數器被初始化并置位(計量輸出數據為“0000-0000-0000-0000”,計費輸出模塊為“0000-0111-0000-0000”),狀態(tài)機被初始化。日志數據輸出distance_out(輸出端口):類型為16位標準邏輯位向量。將行程信息實時輸出到解碼模塊。計費數據輸出fare_out(輸出端口):類型為16位標準邏輯位向量。實時向
36、解碼模塊輸出成本信息。Log高溢出信號distance_cout(輸出端口):類型為標準邏輯位。將計量的溢出信息輸出到溢出處理模塊。計費高溢出信號fare_cout(輸出端口):類型為標準邏輯位。向溢出處理模塊輸出計費溢出信息。綜合電路圖圖3-1-1臺面模塊的RTL圖圖3-1-2臺面模塊綜合組件圖3.1.4模擬波形圖圖3-1-3暫停信號、初始設定信號和復位信號的測試模擬圖3-1-4行程和費用聯動測試模擬1圖3-1-5出行與成本聯動測試模擬二圖3-1-6測試模擬計費溢出信號圖3-1-7日志溢出信號的測試模擬分析從暫停信號、初始設置信號和復位信號的測試仿真圖可以看出,暫停信號、初始設置信號和復位信
37、號都在高電平有效,從而分別設置計數器暫??刂频某跏荚O置和復位操作。從行程和費用聯動測試模擬的兩個模擬波形可以看出,計費可以自動切換3km和9km的行程單價。從充電溢出信號和計量溢出信號的測試可以看出,當計量數據或充電數據的最高四位為“1001”時,溢出信號可以正常輸出。3.2整體頂層文檔的模擬和分析3.2.1功能介紹為每個底層文件提供信號,連接并封裝每個模塊。使每個具有特定功能的模塊組合成一個完整、穩(wěn)定、快速的系統。3.2.2端口介紹儀表時鐘clk_counter(輸入端口):類型為標準邏輯位。作為底層文件的工作時鐘。清除信號停止(輸入端口):類型為標準邏輯位。作為底層計數器和狀態(tài)機的清零控制
38、,當處于高電平時,所有計數器清零,狀態(tài)機跳轉到初始狀態(tài)st0。暫停信號(輸入端口):類型為標準邏輯位。高電平時底層所有計數器暫停,高電平時正常工作。初始化設置信號start(輸入端口):類型為標準邏輯位。當其處于高電平時,底部計數器被初始化并置位(計量輸出數據為“0000-0000-0000-0000”,計費輸出模塊為“0000-0111-0000-0000”),狀態(tài)機被初始化。刷新時鐘clk_display(輸入端口):類型為標準邏輯位。連接到高頻時鐘信號源。用于解碼顯示時數碼管的轉換控制。顯示輸出led7(輸出端口):類型為8位標準邏輯位向量。將顯示數據發(fā)送到74LS138數據選擇器進行數
39、據顯示和輸出。門輸出ls138(輸出端口):類型為3位標準邏輯位向量。選通數據送到74LS138,用于選擇數碼管的顯示。LED顯示輸出light0light3(輸出端口):類型為標準邏輯位。用于輸出表示溢出數據的顯示。綜合電路圖圖3-2-1頂層模塊的綜合組件圖圖3-2-2頂部模塊技術元件圖3.2.4模擬波形圖圖3-2-3頂層文件的測試模擬模擬分析根據上面的仿真圖,整個數字電路系統在軟件測試和仿真中達到了設計要求。4硬件驗證分析4.1一般描述根據以上結果,該系統可以通過計算機仿真。所以我們做硬件驗證。因為用的是早先生產的FPGA芯片(EPF10K10LC84-4),所以用Maxplus下載代碼。
40、圖4-1 EDA教學測試盒的設計和使用4.2引腳分配圖4-2引腳分布圖4.3硬件驗證過程和現象首先,把實驗箱和電腦連接起來。調整兩個時鐘的頻率(要求顯示器刷新時鐘更高)。給實驗箱通電。在電腦上用Maxplus打開準備好的底層文件逐個編譯,最后打開編譯頂層文件。將代碼下載到實驗箱。切換復位開關(自定義)以復位系統的所有計數和狀態(tài)模塊。切換啟動開關,將系統置于啟動狀態(tài)。此時數碼管應顯示“7.00- 0.00”,然后系統會自動開始進入計量計費狀態(tài)。暫停開關測試,系統的暫停功能。此時,數碼管應保持在撥動開關之前的狀態(tài)。當距離顯示超過“3.00”和“9.00”時,檢查計費顯示的狀態(tài)。此時累計計費應分別為
41、0.22和0.33。同時,當距離顯示小于“3.00”時,計費顯示應始終顯示在“7.00”。檢查溢出情況。當計費溢出時,每個溢出將點亮一個LED(從右到左,共三個)。距離溢出也有同樣的效果,但是只能處理一次,因為現實中距離溢出很少發(fā)生。經過在實驗箱上的實際測試,以上要求全部滿足。圖4-1硬件驗證5課程設計的經驗5.1蔡的經歷這學期的EDA課程設計,我們組選的題目是出租車計價器,貼近生活,能將學到的知識運用到實用產品的設計中。首先,最大的感受是可以用自己的大腦思考各個功能模塊的實現方式,同時可以檢驗自己的知識,可以在團隊的合作中共享資源和信息。在設計的過程中,雖然一開始并不順利,嘗試了很多實現功能
42、的方法,也編譯了一些有錯誤的程序,但就是要在錯誤中不斷學習和提高,加深對難點知識點和VHDL語言規(guī)則的理解,同時鍛煉查錯糾錯的能力。此外,通過本次課程設計,學習了FPGA的開發(fā)流程和開發(fā)軟件的使用,掌握了MAX+plus II和Quartus II的編譯、下載、仿真、合成的操作方法,提高了自己的實踐能力。5.2穆的經歷只有自己寫程序,才能真正學會EDA。我的體會很深刻。學了一個學期的EDA,我覺得空間不大了。然而,在設計課程和編寫程序時,我意識到了其中的奧妙。程序寫起來不難,但是要成功實現它的功能涉及到很多細節(jié),這些都需要自己去體驗。在這次課程設計中,我收獲很大。對EDA的理解上了一個臺階,學
43、會了如何使用Max+Pulse II和quartusII。我們組選擇了出租車計費實驗。在編寫程序的過程中,我經常發(fā)現一些原本以為很簡單的電路,用VHDL語言很難描述,或者程序出來時仿真結果是錯誤的,或者不同仿真軟件的結果不一樣。通過大量的嘗試,我認為程序編寫復雜,導致EDA軟件無法按照我的預期解釋程序。有時候,改變一下表達方式,把流程拆解或者合并,往往就能解決問題。EDA程序的編寫一定要簡單明了,用最簡單的方式表達你的邏輯。在編寫程序的過程中,我曾多次因為各種原因推翻之前的程序,甚至完全重寫了完整的程序。我曾經設想過各種控制方法來控制它的運行,但是大部分都因為實現困難而結論了,耗費了大量的時間
44、。后來我干脆把控制模塊和所有外圍的東西都去掉了,只留下最簡單的計距離和充電的模塊,更容易實現功能。起初,我并不真正了解實驗箱中數碼管的連接方式。我按照我的理解設計了它的解碼和顯示電路,最后意識到不需要。我和團隊成員商量后,根據實驗箱的結構重新寫了一個,才得以成功展示。完成的作品和我最初的想法相差很大,結構很簡單。這次同時用了max+pulsII和quartusII。我對max+pulsII并不熟悉,但quartusII是第一次使用,導致我在模擬上糾結了很久。經過同學的指導,我已經可以熟練使用這兩個軟件了。5.3黃德龍的經歷這學期的EDA課程設計讓我學到了很多課堂上學不到的東西。可能我們組和其他
45、組不一樣,因為我們是一起設計的。我們每個人都想到了一個實施計劃,我們每個人都花了幾天時間制定自己的計劃。當我們遇到任何問題時,我們通過各種方式聯系對方,聚在一起解決問題。課堂上老師講的問題很多,但是我印象不深。通過這次課程設計,我深刻理解了解決這些問題的方法,學到了很多課堂上學不到的知識。更重要的是,我學會了如何使用FPGA這種現場可編程門陣列的硬件,以及配套的開發(fā)工具。在撰寫報告的過程中,我逐漸熟悉了標準的紙質報告格式和布局規(guī)則??偠灾?,這次課程設計給我?guī)砹朔浅XS富的收獲。感覺學院,感覺老師,給了我們這個難得的機會。我感激你,因為你,我們一起學習,一起學習,一起進步。6出租車計價器的FP
46、GA實現摘要隨著公共交通的發(fā)展和社會經濟技術的進步,越來越多的人會選擇出租車作為出行方式,這也帶來了出租車行業(yè)的快速發(fā)展。這無異于創(chuàng)造了一個巨大的出租車計價器市場,同時,用戶對出租車計價器的要求也越來越高。特別是工作性能穩(wěn)定,計費準確,操作方便,可靠性高。這需要性能良好、可靠的數字電路。使用基于FPGA的VHDL設計,迎合了EDA技術的巨大市場需求。EDA (Electronic Design Automation)技術作為現代電子設計技術的核心,它依靠強大的計算機平臺,在EDA軟件工具、硬件描述語言的邏輯描述方法下,為系統完成設計文件,自動完成邏輯簡化、邏輯劃分、邏輯綜合、邏輯優(yōu)化和仿真等多
47、種功能,直到電子電路的性能達到所希望的系統功能。EDA技術允許設計人員只使用軟件,即使用硬件描述語言(HDL)和EDA軟件來完成系統硬件功能的實現。FPGA(現場可編程門陣列)是主流的ASIC(專用集成電路)目標器件。它的特點是直接面向用戶,具有極大的靈活性和通用性,易于使用,硬件測試和實現速度快,開發(fā)效率高,成本低,上市時間短,技術維護簡單,可靠性好等特點。VHDL(超高速集成電路硬件描述語言)最初是由美國國防部創(chuàng)建的。發(fā)展至今,它已經成為電子設計硬件描述語言的主流。本設計基于FPGA開發(fā)平臺,Quartus和Maxplus電子設計軟件開發(fā)環(huán)境,采用VHDL文本設計方法,完成并實現了出租車計
48、價器電路的設計。本報告首先關注不同解決方案的競爭和選擇;其次,將系統分成不同的模塊,從底層的VHDL文件開始,介紹每個模塊連接的各個端口和功能分析,并展示分析的計算機仿真結果;第三,對頂層VHDL文件進行分析,并給出了該系統的最終綜合和仿真結果。最后但并非最不重要的是,它是分析硬件驗證的結果。7參考文獻1.宋、黃、。EDA技術實踐教程-VHDL版本。理科. 2010.6: 1 5。8附錄8.1方案一實施代碼8.1.1測井模塊的距離計數器vhd圖書館ieee使用IEEE . STD _ logic _ 1164 . all;使用IEEE . STD _ logic _ unsigned . al
49、l;實體距離_計數器為port(clk,clr,en,load:in STD _ logic;-用于記錄距離、復位信號、計數使能(即暫停信號)和異步設置(即啟動信號)的時鐘。dout:out std_logic_vector(15下降到0);-距離輸出dout _ sm:out STD _ logic _ vector(11 down to 8);-公里輸出,作為狀態(tài)機的檢測信號。cout0、cout 1:out STD _ logic);-攜帶超過100米(作為計費時鐘,100米將計費一次),攜帶超過100Km超出范圍。結束距離_計數器;距離計數器的體系結構bhv為開始進程(時鐘、時鐘、en
50、、加載)變量q:std_logic_vector(15下降到0);開始if (clr=1 或load=1 )則q:=(others = 0 );-清除或有效設置。elsif (clkevent and clk=1 )然后如果en=0 那么如果q(3下降到0)“1001”那么q(3下降到0):=q(3下降到0)+1;-一點+1else q(3 down to 0):=“0000”;-每一位都有進位。如果q(7下托4)“1001”那么q(7下托4):=q(7下托4)+1;-十位數+1else q(7 downto 4):= 0000 ;如果q(11下降到8)“1001”那么q(11下降到8):=q
51、(11下降到8)+1;-百+1else q(11 down to 8):= 0000 ;-數百人攜帶。如果q(15下到12)“1001”那么q(15下到12):=q(15下到12)+1;-else q(15下到12):=“0000”;-結束if;結束if;結束if;結束if;結束if;結束if;如果q(3 down to 0)=“1001”,那么cout 0 =“0”;-全程百米搬運else cout0 = 1結束if;如果q(15 downto 12)=1001 ,那么cout1 = 0-100公里全程運載else cout1 = 1結束if;dout = q;dout_sm=q(11下降到
52、8);結束進程;結束bhv狀態(tài)機模塊state_machine.vhd圖書館ieee使用IEEE . STD _ logic _ 1164 . all;使用IEEE . STD _ logic _ unsigned . all;實體狀態(tài)機為port(clk,stop,pause,start:在std _ logic-時鐘、復位、暫停、開始信號距離:在std_logic_vector(3 downto 0)中;-輸入距離公里數out:out STD _ logic _ vector(1 downto 0)-輸出充電控制信號。);結束狀態(tài)機;狀態(tài)機的體系結構bhv是類型狀態(tài)為(st0,st1,st
53、2,st3);-定義四種狀態(tài)。信號current_state,next _ state:States:= st0;開始注冊:過程(CLK,停止)-掌握連續(xù)的過程。開始如果stop=1 那么current _ state = st0elsif clkevent和clk=1 then當前狀態(tài) dataout=00 時;-距離、票價重置狀態(tài)如果pause=1 ,那么next _ state = st0elsif start = 1 then next _ state = st1;elsif stop = 1 then next _ state = st0;否則next _ state dataout
54、 = 00-距離不到3公里。如果距離“0011 ”,則如果pause=1 ,那么next _ state = st1elsif stop = 1 then next _ state = st0;否則next _ state = st1結束if;否則next _ state dataout = 01-距離大于3公里小于9公里。如果距離“1001 ”,則如果pause=1 ,那么next _ state = st2elsif stop = 1 then next _ state = st0;否則next _ state = st2結束if;否則next _ state dataout = 10-超
55、過9公里如果pause=1 ,那么next _ state = st3elsif stop = 1 then next _ state = st0;否則next _ state next _ state = st0結束案例;結束進程COM結束bhv8.1.3計費模塊counter_fare.vhd圖書館ieee使用IEEE . STD _ logic _ 1164 . all;使用IEEE . STD _ logic _ unsigned . all;實體counter_fare為port(clk,clr,en,load:in STD _ logic;-用于記錄費用(從100米的距離攜帶)、清
56、除信號、計數使能(即暫停信號)和異步設置(即開始信號)的時鐘。datain:在std_logic_vector中(1向下到0);-來自狀態(tài)機的控制信號,它影響收費標準。dout:out std_logic_vector(15下降到0);-通行費的產出。cout:out STD _ logic);攜帶一百元以上。結束counter _ farecounter_fare的架構bhv為常數add 0:STD _ logic _ vector(7 down to 0):= 00000000 ;常數add 1:STD _ logic _ vector(7 down to 0):= 00100010 ;常
57、數add 2:STD _ logic _ vector(7 down to 0):= 00110011 ;-add0、add1、add2是三種充電標準。常量load 0:STD _ logic _ vector(15 down to 0):= 00000 ;常量load 1:STD _ logic _ vector(15 down to 0):= 00000 ;- load0、load1是兩個設定值。信號add:STD _ logic _ vector(7 down to 0);信號加載:STD _ logic _ vector(15 down to 0);開始datain = 00 else
58、時Add = add0根據狀態(tài)機的控制信號,確定計費標準。當datain=01 else時添加1當datain=10 else時添加2add0loading = load 0 when clr = 1 else-根據清除和設置信號的控制來確定設置值。當load=1 否則為load1load0進程(時鐘、時鐘、en、加載)變量q:std_logic_vector(15下降到0);開始如果clr=1 或load=1 ,則q:= loading;elsif (clkevent and clk=1 )然后En = 0 則計數啟用q(3下到0):=q(3下到0)+add(3下到0);-一位數加法如果(3
59、減0)“1010”那么-確定每個位相加的結果是否有結轉。q(7降4):=q(7降4)+add(7降4);-如果沒有進位,就加十位數。如果q(7下降到4)“1010”,則為空;else q(7下托4):=q(7下托4)-“1010”;-超越十,進行調整。如果q(11下降到8)“1001”那么q(11下降到8):=q(11下降到8)+1;else q(11 down to 8):= 0000 ;如果q(15下到12)“1001”那么q(15下到12):=q(15下到12)+1;else q(15下到12):=“0000”;結束if;結束if;結束if;其他q(3下到0):=q(3下到0)-“101
60、0”;-如果個位數相加的結果超過十,則進行調整。q(7下托4):=q(7下托4)+add(7下托4)+1;-十位數相加,加上一位數的進位。如果q(7下降到4)“1010”,則為空;else q(7下托4):=q(7下托4)-“1010”;如果q(11下降到8)“1001”那么q(11下降到8):=q(11下降到8)+1;else q(11 down to 8):= 0000 ;如果q(15下到12)“1001”那么q(15下到12):=q(15下到12)+1;else q(15下到12):=“0000”;結束if;結束if;結束if;結束if;結束if;結束if;如果q(15 downto 1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度水路貨運運輸承包服務合同2篇
- 二零二五版水電安裝工程安全評估與施工合同2篇
- 二零二五版農業(yè)貸款定金合同規(guī)范文本3篇
- 二零二五版幼兒園教師勞動權益保護及勞動合同解除程序協議3篇
- 二零二五版房產托管居間服務合同協議3篇
- 二零二五年房地產物業(yè)管理合作開發(fā)合同3篇
- 二零二五年度重點單位保安勤務合同5篇
- 二零二五版微電影導演定制化拍攝合同3篇
- 二零二五版KTV員工心理健康關愛計劃合同2篇
- 二零二五年度高端酒店場地租賃合同范本2篇
- DB34∕T 4010-2021 水利工程外觀質量評定規(guī)程
- 納米復合材料的增韌增能機制
- 圖書館前臺接待工作總結
- 衛(wèi)生院藥品管理制度
- 神經外科進修匯報課件
- 2024老年人靜脈血栓栓塞癥防治中國專家共識(完整版)
- 騰訊營銷師認證考試題庫(附答案)
- 鄰近鐵路營業(yè)線施工安全監(jiān)測技術規(guī)程 (TB 10314-2021)
- 四年級上冊脫式計算100題及答案
- 資本市場與財務管理
- 河南近10年中考真題數學含答案(2023-2014)
評論
0/150
提交評論