版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 EDA技術(shù) 課 程 設(shè) 計(jì) 題 目 簡(jiǎn)易計(jì)算器設(shè)計(jì) 系 (部) 信息工程系 班 級(jí) 姓 名 學(xué) 號(hào) 指導(dǎo)教師 2013 年 7 月 8 日至 7 月 12 日 共 1 周 EDA技術(shù) 課程設(shè)計(jì)任務(wù)書(shū)一、設(shè)計(jì)題目、內(nèi)容及要求 設(shè)計(jì)題目:簡(jiǎn)易計(jì)算器設(shè)計(jì)內(nèi)容及要求:(1)基本設(shè)計(jì)內(nèi)容1:設(shè)計(jì)簡(jiǎn)易通用型計(jì)算器,完成對(duì)數(shù)據(jù)通路的架構(gòu),控制模塊和運(yùn)算器模塊的設(shè)計(jì),可進(jìn)行加減乘除的基本運(yùn)算。(2)基本設(shè)計(jì)內(nèi)容2:加入按鍵消除抖動(dòng)的模塊,并在試驗(yàn)箱或開(kāi)發(fā)板上通過(guò)數(shù)碼管顯示計(jì)算器的輸入數(shù)值與輸出結(jié)果,實(shí)現(xiàn)一個(gè)完整的計(jì)算器。(3)進(jìn)階設(shè)計(jì)內(nèi)容:通過(guò)矩陣鍵盤(pán)實(shí)現(xiàn)數(shù)據(jù)的輸入。(4)進(jìn)階設(shè)計(jì)內(nèi)容:實(shí)現(xiàn)有符號(hào)數(shù)的計(jì)算。
2、(5)進(jìn)階設(shè)計(jì)內(nèi)容:實(shí)現(xiàn)浮點(diǎn)數(shù)的計(jì)算。設(shè)計(jì)要求:(1)根據(jù)任務(wù)要求確定電路各功能模塊; (2)寫(xiě)出設(shè)計(jì)程序;(3)分析時(shí)序仿真結(jié)果; (4)提交設(shè)計(jì)總結(jié)。二、設(shè)計(jì)原始資料 Quartus軟件;EDA實(shí)驗(yàn)箱;計(jì)算機(jī)一臺(tái);三、要求的設(shè)計(jì)成果(課程設(shè)計(jì)說(shuō)明書(shū)、設(shè)計(jì)實(shí)物、圖紙等)課程設(shè)計(jì)說(shuō)明書(shū)1份,不少于2000字,應(yīng)包含設(shè)計(jì)原理分析、相關(guān)軟件介紹、仿真波形分析,實(shí)驗(yàn)箱下載驗(yàn)證等。四、進(jìn)程安排周1-周3: 查閱資料,上機(jī)編寫(xiě)并調(diào)試設(shè)計(jì)程序;周4:整理、撰寫(xiě)說(shuō)明書(shū);周5:課程設(shè)計(jì)答辯并提交設(shè)計(jì)說(shuō)明書(shū)。五、主要參考資料1.Voknei A.Pedroni.VHDL數(shù)字電路設(shè)計(jì)教程.電子工業(yè)出版社,2008
3、.52.潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程(第二版).科學(xué)出版社,2005.23.焦素敏.EDA應(yīng)用技術(shù).清華大學(xué)出版社,2002.4指導(dǎo)教師(簽名):教研室主任(簽名):課程設(shè)計(jì)成績(jī)?cè)u(píng)定表出勤情況出勤天數(shù) 缺勤天數(shù)成績(jī)?cè)u(píng)定出勤情況及設(shè)計(jì)過(guò)程表現(xiàn)(20分)課設(shè)答辯(20分)設(shè)計(jì)成果(60分)總成績(jī)(100分)提問(wèn)(答辯)問(wèn)題情況綜合評(píng)定 指導(dǎo)教師簽名: 年 月 日目 錄1 緒論12 軟件介紹22.1 Quartus II介紹22.2 ModelSim介紹33 設(shè)計(jì)原理54模塊化設(shè)計(jì)分析64.1鍵盤(pán)矩陣模塊64.2去抖模塊設(shè)計(jì)64.3 ALU模塊設(shè)計(jì)74.4 FSM模塊設(shè)計(jì)74.5 OP1模塊設(shè)計(jì)
4、84.6 OP2模塊設(shè)計(jì)94.7 BIN模塊設(shè)計(jì)94.8 BCD模塊設(shè)計(jì)105 總結(jié)11參考文獻(xiàn)12附錄131 緒論硬件描述語(yǔ)言(hardware description language,HDL)是電子系統(tǒng)硬件行為描述,結(jié)構(gòu)描述,數(shù)據(jù)流描述的語(yǔ)言。目前,利用硬件描述語(yǔ)言可以進(jìn)行數(shù)字電子系統(tǒng)的設(shè)計(jì)。隨著研究的深入,利用硬件描述語(yǔ)言進(jìn)行模擬電子系統(tǒng)設(shè)計(jì)或混合電子系統(tǒng)設(shè)計(jì)也正在探索中。國(guó)外硬件描述語(yǔ)言種類(lèi)很多,有的從Pascal發(fā)展而來(lái),也有一些從C語(yǔ)言發(fā)展而來(lái)。有些HDL成為IEEE標(biāo)準(zhǔn),但大部分是企業(yè)標(biāo)準(zhǔn)。VHDL來(lái)源于美國(guó)軍方,其他的硬件描述語(yǔ)言則多來(lái)源于民間公司??芍^百家爭(zhēng)鳴,百花齊放。這
5、些不同的語(yǔ)言傳播到國(guó)內(nèi),同樣也引起了不同的影響。在我國(guó)比較有影響的有兩種硬件描述語(yǔ)言:VHDL語(yǔ)言和Verilog HDL語(yǔ)言。這兩種語(yǔ)言已成為IEEE標(biāo)準(zhǔn)語(yǔ)言。 電子設(shè)計(jì)自動(dòng)化(electronic design automation,EDA)技術(shù)的理論基礎(chǔ),設(shè)計(jì)工具,設(shè)計(jì)器件應(yīng)是這樣的關(guān)系:設(shè)計(jì)師用硬件描述語(yǔ)言HDL描繪出硬件的結(jié)構(gòu)或硬件的行為,再用設(shè)計(jì)工具將這些描述綜合映射成與半導(dǎo)體工藝有關(guān)的硬件配置文件,半導(dǎo)體器件FPGA則是這些硬件配置文件的載體。當(dāng)這些FPGA器件加載,配置上不同的文件時(shí),這個(gè)器件便具有了相應(yīng)的功能。在這一系列的設(shè)計(jì),綜合,仿真,驗(yàn)證,配置的過(guò)程中,現(xiàn)代電子設(shè)計(jì)理論
6、和現(xiàn)代電子設(shè)計(jì)方法貫穿于其中。以HDL語(yǔ)言表達(dá)設(shè)計(jì)意圖,以FPGA作為硬件實(shí)現(xiàn)載體,以計(jì)算機(jī)為設(shè)計(jì)開(kāi)發(fā)工具,以EDA軟件為開(kāi)發(fā)環(huán)境的現(xiàn)代電子設(shè)計(jì)方法日趨成熟。VHDL語(yǔ)言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成電路硬件描述語(yǔ)言。HDL發(fā)展的技術(shù)源頭是:在HDL形成發(fā)展之前,已有了許多程序設(shè)計(jì)語(yǔ)言,如匯編,C,Pascal,F(xiàn)ortran,Prolog等。這些語(yǔ)言運(yùn)行在不同硬件平臺(tái)和不同的操作環(huán)境中,它們適合于描述過(guò)程和算法,不適合作硬件描述。CAD的出現(xiàn),使人們可以利用計(jì)算機(jī)進(jìn)行建
7、筑,服裝等行業(yè)的輔助設(shè)計(jì),電子輔助設(shè)計(jì)也同步發(fā)展起來(lái)。在從CAD工具到EDA工具的進(jìn)化過(guò)程中,電子設(shè)計(jì)工具的人機(jī)界面能力越來(lái)越高。在利用EDA工具進(jìn)行電子設(shè)計(jì)時(shí),邏輯圖,分立電子原件作為整個(gè)越來(lái)越復(fù)雜的電子系統(tǒng)的設(shè)計(jì)已不適應(yīng)。任何一種EDA工具,都需要一種硬件描述語(yǔ)言來(lái)作為EDA工具的工作語(yǔ)言。這些眾多的EDA工具軟件開(kāi)發(fā)者,各自推出了自己的HDL語(yǔ)言。2 軟件介紹2.1 Quartus II介紹Quartus II 是Alter公司的綜合性PLD/FPGA開(kāi)發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language
8、)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。Quartus II提供了完全集成且于電路結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,包括:可利用原理圖、結(jié)構(gòu)框圖、Verilog HDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件;芯片(電路)平面布局連線編輯;LogicLock增量設(shè)計(jì)方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對(duì)原始系統(tǒng)的性能影響較小或無(wú)影響的后續(xù)模塊;功能強(qiáng)大的邏輯綜合工具;完備的電路功能仿真與時(shí)序邏輯仿真工具;定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;可使用SignalTap II邏輯分析工具進(jìn)行嵌入式的邏輯分析;支
9、持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來(lái)生成編程文件;使用組合編譯方式可一次完成整體設(shè)計(jì)流程;自動(dòng)定位編譯錯(cuò)誤;高效的期間編程與驗(yàn)證工具;可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件盒Verilog網(wǎng)表文件;能生成第三方EDA軟件使用的VHDL網(wǎng)表和Verilog網(wǎng)表文件。Max+plus II 作為Altera的上一代PLD設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對(duì)Max+plus II 的更新支持。Quartus II 是Altera公司繼Max+plus II之后開(kāi)發(fā)的一種針對(duì)其公司生產(chǎn)的系列CPLD/PGFA器件的綜合性開(kāi)發(fā)軟件,它的版本不斷升級(jí),
10、從4.0版到10.0版,這里介紹的是Quartus II 8.0版,該軟件有如下幾個(gè)顯著的特點(diǎn):1、Quartus II 的優(yōu)點(diǎn)該軟件界面友好,使用便捷,功能強(qiáng)大,是一個(gè)完全集成化的可編程邏輯設(shè)計(jì)環(huán)境,是先進(jìn)的EDA工具軟件。該軟件具有開(kāi)放性、與結(jié)構(gòu)無(wú)關(guān)、多平臺(tái)、完全集成化、豐富的設(shè)計(jì)庫(kù)、模塊化工具等特點(diǎn),支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。Quartus II可以在XP、Linux以及Unix上使用,除
11、了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。2、Quartus II對(duì)器件的支持Quartus II支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘積項(xiàng)器件。支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含了LPM/MegaFunctio
12、n宏功能模塊庫(kù),用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。此外,Quartus II 通過(guò)和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開(kāi)發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開(kāi)發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開(kāi)發(fā)平臺(tái)。3、Quartus II對(duì)第三方EDA工具的支持對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開(kāi)發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持
13、基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開(kāi)發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添 了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。2.2 ModelSim介紹Mentor公司的ModelSim是業(yè)界最優(yōu)秀的HDl語(yǔ)言仿真軟件,它能提供友好的仿真環(huán)境,是業(yè)界唯一的但內(nèi)核支持VHDL和Verilog混合仿真的仿真器。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺(tái)無(wú)關(guān),
14、便于保護(hù)IP核,個(gè)性化的圖形界面和用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段,是FPGA/ASIC設(shè)計(jì)的首選仿真軟件。ModelSim主要特點(diǎn):RTL和門(mén)級(jí)優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快,跨平臺(tái)跨版本仿真;單內(nèi)核VHDL和Verilog混合仿真;源代碼末班和助手,項(xiàng)目管理;集成了性能分析、波形比較、代碼覆蓋、數(shù)據(jù)流ChaseX、Signal Spay、虛擬對(duì)象Virual Object、Memory窗口、Assertion窗口、源碼窗口顯示信號(hào)值、信號(hào)條件斷點(diǎn)等眾多調(diào)試功能;C和Tcl/Tk接口、C調(diào)試;對(duì)SystemC的直接支持,和HDL任意混合;支持SystemVerilog的設(shè)計(jì)功能;
15、對(duì)系統(tǒng)級(jí)描述語(yǔ)言的最全面支持,SystemVerilog、SystemC、PSL;可以單獨(dú)或同事進(jìn)行行為、RTL級(jí)、和門(mén)級(jí)的代碼。ModelSim分幾種不同的版本:SE、PE、LE和OEM,其中SE是最高級(jí)的版本,而集成在 Actel、Atmel、Altera、Xilinx以及Lattice等FPGA廠商設(shè)計(jì)工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有較大差別,比如對(duì)于大家都關(guān)心的仿真速度問(wèn)題,以Xilinx公司提供的OEM版本ModelSim XE為例,對(duì)于代碼少于40000行的設(shè)計(jì),ModelSim SE 比ModelSim XE要快10倍;對(duì)于代碼超過(guò)40000行的設(shè)計(jì),
16、ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和LINUX混合平臺(tái); Mentor Graphics公司提供業(yè)界最好的技術(shù)支持與服務(wù)。3 設(shè)計(jì)原理本設(shè)計(jì)主要利用狀態(tài)機(jī)進(jìn)行整體設(shè)計(jì),分部完成,便于大家分組進(jìn)行合作,此設(shè)計(jì)要求完成對(duì)數(shù)據(jù)通路的架構(gòu),控制模塊和運(yùn)算器模塊的設(shè)計(jì),可進(jìn)行加減乘除的基本運(yùn)算。應(yīng)用上周所學(xué)知識(shí),利用狀態(tài)機(jī)進(jìn)行簡(jiǎn)易計(jì)算器的編寫(xiě)。簡(jiǎn)易計(jì)算器由鍵盤(pán)輸入模塊、鍵盤(pán)去抖動(dòng)模塊、狀態(tài)機(jī)、計(jì)算模塊、OP1、OP2模塊、顯示模塊組成,結(jié)構(gòu)清晰,易于編寫(xiě)。簡(jiǎn)易計(jì)算器采用自頂向下的設(shè)計(jì)原則,檢測(cè)按鍵次數(shù)時(shí),以scancode從非空到空的跳變
17、使計(jì)數(shù)器加一,第一運(yùn)算數(shù)則在press_count=1時(shí),將scancode裝配到bcd碼最低位bcd3:0,在press_count=2時(shí),裝配到bcd7:4,F(xiàn)SM在檢測(cè)到+-×/鍵時(shí),將bcd賦予bcd2,同時(shí)啟動(dòng)alu的操作alu_op。FSM根據(jù)scancode進(jìn)度,輸出對(duì)應(yīng)的outsel,選擇顯示不同的bcd數(shù)據(jù)。計(jì)算器模塊化設(shè)計(jì)原理圖如圖3-1所示。檢測(cè)按鍵次數(shù)press_count第1運(yùn)算數(shù)bcdFSM第2運(yùn)算數(shù)bcdbcd2(+-*/) loadALUbcdbcd2alu_opresdisplayoutselopkeyscancode圖3-1 簡(jiǎn)易計(jì)算器模塊化設(shè)計(jì)原
18、理圖4模塊化設(shè)計(jì)分析4.1 鍵盤(pán)矩陣模塊計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤(pán)的方案。矩陣鍵盤(pán)采用四條線作為行線,四條線作為列線組成鍵盤(pán),在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤(pán)上按鍵的個(gè)數(shù)就為4×4個(gè)。鍵盤(pán)模塊采用4×4矩陣鍵盤(pán),4位行線接上上拉電阻后接到高電平上,列線接上上拉電阻后依次給予低電平來(lái)判斷哪個(gè)節(jié)點(diǎn)為低電平時(shí)即這個(gè)節(jié)點(diǎn)被按下,從而被讀入到下一單元。矩陣鍵盤(pán)模塊原理圖如圖4-1所示,矩陣鍵盤(pán)仿真波形如圖4-2所示。圖
19、4-1 矩陣鍵盤(pán)模塊原理圖圖4-2 矩陣鍵盤(pán)仿真波形4.2 去抖模塊設(shè)計(jì)作為機(jī)械開(kāi)關(guān)的鍵盤(pán),在開(kāi)關(guān)開(kāi)啟或關(guān)閉的瞬間會(huì)出現(xiàn)電壓抖動(dòng),消除抖動(dòng)的方法一般有硬件和惡、軟件的方法,一般進(jìn)行軟件處理,這樣實(shí)現(xiàn)簡(jiǎn)單、設(shè)計(jì)靈活、節(jié)約成本。程序設(shè)計(jì)原理:按鍵去抖動(dòng)關(guān)鍵在于提取穩(wěn)定的電平狀態(tài),濾除抖動(dòng)毛刺,對(duì)于一個(gè)按鍵信號(hào),可以用一次脈沖對(duì)其進(jìn)行取樣,如果連續(xù)三次取樣為低電平,則為低電平,如果不滿足三次取樣都為低,則認(rèn)為按鍵穩(wěn)定狀態(tài)結(jié)束。去抖模塊原理圖如圖4-3所示,仿真波形如圖4-4所示。圖4-3 去抖模塊原理圖圖4-4 去抖模塊仿真波形4.3 ALU模塊設(shè)計(jì)ALU模塊主要實(shí)現(xiàn)數(shù)據(jù)的加減乘除運(yùn)算,用VHDL代
20、碼描述邏輯單元、算數(shù)單元、選擇器單元,要求輸入兩組二進(jìn)制數(shù)據(jù),利用元件例化語(yǔ)句將設(shè)計(jì)的三個(gè)單元進(jìn)行組合,建立一個(gè)包含所有元件的包集。ALU模塊原理圖如圖4-5所示,仿真波形圖如圖4-6所示。圖4-5 ALU模塊原理圖圖4-6 ALU模塊仿真波形4.4 FSM模塊設(shè)計(jì)狀態(tài)機(jī)由六個(gè)狀態(tài)組成,主要是判斷鍵盤(pán)輸入的是數(shù)據(jù)還是運(yùn)算符,從而來(lái)進(jìn)行不同的運(yùn)算,首先判斷第一個(gè)輸入的數(shù)據(jù)是否為數(shù)字,若不是數(shù)據(jù)則等待,若是數(shù)據(jù)則進(jìn)入下一個(gè)狀態(tài)等鍵盤(pán)彈起后判斷下一個(gè)數(shù)據(jù)為數(shù)字還是運(yùn)算符,若是數(shù)據(jù)則將數(shù)據(jù)存入OP1,若是運(yùn)算符,則將數(shù)據(jù)存入OP1和OP2,并等待下一個(gè)數(shù)據(jù)的到來(lái),狀態(tài)機(jī)中值得注意的是在進(jìn)行數(shù)據(jù)運(yùn)算時(shí),
21、將運(yùn)算的數(shù)據(jù)要存入OP1和OP2中。FSM模塊原理圖如圖4-7所示,F(xiàn)SM仿真波形圖如圖4-8所示。圖4-7 FSM模塊原理圖圖4-8 FSM模塊仿真波形圖4.5 OP1模塊設(shè)計(jì)OP1模塊的主要功能是實(shí)現(xiàn)數(shù)據(jù)的輸入及存儲(chǔ),主要用來(lái)做被加數(shù)、被除數(shù)等,在第一次輸入數(shù)據(jù)時(shí),數(shù)據(jù)存入OP1等進(jìn)行操作后,數(shù)據(jù)會(huì)被裝載到OP1和OP2模塊中,待數(shù)據(jù)被輸入時(shí)更新OP1中的數(shù)據(jù)。OP1模塊原理圖如圖4-9所示,仿真波形圖如圖4-10所示。圖4-9 OP1模塊原理圖圖4-10 OP1模塊仿真波形4.6 OP2模塊設(shè)計(jì)OP2模塊的主要功能是用來(lái)存儲(chǔ)運(yùn)算完成的數(shù)據(jù),使計(jì)算器有連續(xù)計(jì)算的能力。當(dāng)進(jìn)行完一次運(yùn)算后,此
22、時(shí)OP2_LOAD為1,此時(shí)將運(yùn)算完的數(shù)據(jù)裝載到OP2模塊中。OP2模塊原理圖如圖4-11所示,仿真波形圖如圖4-12所示。圖4-11 OP2模塊設(shè)計(jì)原理圖圖4-12 OP2模塊仿真波形圖4.7 BIN模塊設(shè)計(jì)二進(jìn)制模塊的功能是將二進(jìn)制數(shù)字轉(zhuǎn)化成BCD碼。BIN模塊原理圖如圖4-13,仿真波形圖如圖4-14。圖4-13 BIN模塊原理圖圖4-14 BIN模塊仿真波形4.8 BCD模塊設(shè)計(jì)BCD模塊是將BCD碼轉(zhuǎn)化成二進(jìn)制數(shù)字。BCD模塊原理圖如圖4-14,仿真波形圖如圖4-15。圖4-14 BCD模塊原理圖圖4-15 BCD模塊仿真波形5 總結(jié)這次的設(shè)計(jì),給我的印象很深,通過(guò)這次課程設(shè)計(jì),我對(duì)
23、EDA這門(mén)課程有了很好很深的理解。通過(guò)做計(jì)算器,我對(duì)Quartus II和ModelSim應(yīng)用更加熟悉了。本次課程設(shè)計(jì),要求做一個(gè)簡(jiǎn)易計(jì)算器,第一周首先由北京至芯科技公司的老師來(lái)為我們講解相關(guān)的知識(shí),講解做計(jì)算器的方法。通過(guò)老師的講解我對(duì)本課題有了一定的了解。但是,在對(duì)該課題有一定的了解的前提下,也發(fā)現(xiàn)了很多問(wèn)題。認(rèn)識(shí)到理論與實(shí)踐之間的差距,聯(lián)系實(shí)際的應(yīng)用去理解只是比一大堆理論來(lái)的直接與清晰明了。本簡(jiǎn)易計(jì)算器的設(shè)計(jì),是用Quartus II軟件進(jìn)行代碼編寫(xiě)、原理圖設(shè)計(jì),用ModelSim軟件來(lái)實(shí)現(xiàn)仿真。通過(guò)對(duì)簡(jiǎn)易計(jì)算器設(shè)計(jì),熟悉了Quartus II的運(yùn)行環(huán)境,初步掌握了VHDL語(yǔ)言基本庫(kù)函數(shù)
24、的調(diào)用和編寫(xiě)基本程序等應(yīng)用;明白了原理圖和代碼之間的關(guān)系;學(xué)會(huì)了做一個(gè)工程的一般步驟,以及分模塊化設(shè)計(jì)的好處。最后,我要在這里對(duì)給我這次課程設(shè)計(jì)提供幫助的魏老師和王老師,還有同學(xué)們說(shuō)聲誠(chéng)摯的感謝。正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本次課程設(shè)計(jì)圓滿完成。在這個(gè)過(guò)程中我學(xué)到了很多知識(shí),不僅鞏固了已有知識(shí),而且強(qiáng)化了一些關(guān)于數(shù)學(xué)MATLAB軟件應(yīng)用方面的知識(shí),非常感謝你們的幫助。參考文獻(xiàn)1 喬廬峰,王志功.數(shù)字電路設(shè)計(jì)教程M. 北京電子工業(yè)出版社,20102 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程(第二版)M. 科學(xué)出版社,20053 焦素敏,EDA應(yīng)用技術(shù)M. 北京清華大學(xué)出
25、版社,20024 譚會(huì)生,張昌凡.EDA技術(shù)及應(yīng)用M. 西安西安電子科技大學(xué)出版社,20085 曾繁泰,陳美金.VHDL程序設(shè)計(jì)M. 北京清華大學(xué)出版社,2007附錄-鍵盤(pán)矩陣模塊程序-LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY keys ISPORT(clk : IN STD_LOGIC;rst : IN STD_LOGIC;row : IN STD_LOGIC_VECTOR(3 downto 0);col : OUT STD_LOGIC_VECTOR(3 downto 0);
26、scancode : OUT STD_LOGIC_VECTOR(15 downto 0);END keys;ARCHITECTURE keys_architecture OF keys ISsignal current_state,next_state:std_logic_vector(1 downto 0);signal enable:std_logic;BEGINprocess(clk,rst,enable)beginif rst='1' then current_state<="00"elsif clk'event and clk=
27、9;1' and enable='0'thencurrent_state<=next_state;end if;end process;process(rst,current_state,row)begin if rst='1' then col<="1111"else case current_state iswhen "00" =>col<="1110" ;next_state<="01"when "01" =>co
28、l<="1101" ;next_state<="10"when "10" =>col<="1011" ;next_state<="11"when "11" =>col<="0111" ;next_state<="00"when others=>col<="1111"next_state<="00"end case;end if;en
29、d process;process(current_state,row)beginif rst='1' then scancode<=X"0000"enable<='0'elsifcurrent_state="00" thencase row is when "1110"=>scancode<=X"0001"enable<='1'when "1101"=>scancode<=X"0002"
30、;enable<='1'when "1011"=>scancode<=X"0004"enable<='1'when "0111"=>scancode<=X"0008"enable<='1'when others=>scancode<=X"0000"enable<='0'end case;elsif current_state="01" thencase
31、row is when "1110"=>scancode<=X"0010"enable<='1'when "1101"=>scancode<=X"0020"enable<='1'when "1011"=>scancode<=X"0040"enable<='1'when "0111"=>scancode<=X"0080"ena
32、ble<='1'when others=>scancode<=X"0000"enable<='0'end case;elsif current_state="01" thencase row is when "1110"=>scancode<=X"0100"enable<='1'when "1101"=>scancode<=X"0200"enable<='1
33、39;when "1011"=>scancode<=X"0400"enable<='1'when "0111"=>scancode<=X"0800"enable<='1'when others=>scancode<=X"0000"enable<='0'end case;elsecase row is when "1110"=>scancode<=X"10
34、00"enable<='1'when "1101"=>scancode<=X"2000"enable<='1'when "1011"=>scancode<=X"4000"enable<='1'when "0111"=>scancode<=X"8000"enable<='1'when others=>scancode<=X"
35、0000"enable<='0'end case;end if;end process;END keys_architecture;-去抖模塊程序-LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY filter ISPORT(clk : IN STD_LOGIC;rst : IN STD_LOGIC;scancode : IN STD_LOGIC_VECTOR(15 downto 0);sc : OUT STD_LOGIC_VECTOR(15 downto 0);END filter;ARCHITECTURE fil
36、ter_architecture OF filter ISsignal count: integer range 0 to 100001;signal temp: STD_LOGIC_VECTOR(15 downto 0);constant G1:integer :=100;BEGINprocess(clk,rst,scancode)beginif rst='1' then count<=0;elsif clk'event and clk='1'thenif scancode=X"0000" then count<=0;e
37、lsif count<G1 then count<=count+1;end if;end if;end process;process(rst,count,scancode) beginif rst='1' then sc<=X"0000"temp<=X"0000"elsecase count iswhen 0=>temp<=scancode;when G1=> if temp = scancode thensc<=temp;else sc<=X"0000"end
38、if;when others=>sc<=X"0000" ;end case;end if;end process;END filter_architecture;-ALU模塊程序-LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;USE ieee.std_logic_arith.all;ENTITY AUL ISPORT(op1_in : IN STD_LOGIC_VECTOR(27 downto 0);op2_in : IN STD_LOGIC_VECTOR(27
39、downto 0);oprand:IN STD_LOGIC_VECTOR(2 downto 0);AUL_OUT : OUT STD_LOGIC_VECTOR(27 downto 0);END AUL;ARCHITECTURE AUL_architecture OF AUL ISBEGINprocess(oprand,op1_in,op2_in)variable temp,temp1,temp2 : STD_LOGIC_VECTOR(27 downto 0);variable t1,t2:integer range 0 to 268435455;variable t3:integer rang
40、e 0 to 268435455;begin case oprand iswhen "000" => AUL_OUT<=op1_in;when "001" => temp1:=op1_in;temp2:=op2_in;temp:=temp1+temp2;AUL_OUT<=temp;when "010" => t1:=conv_integer(op1_in);t2:=conv_integer(op2_in);if t2>=t1 thent3:=t2-t1;AUL_OUT<=conv_STD_LO
41、GIC_VECTOR(t3,28);else AUL_OUT<=X"8888888"end if;when "011" => t1:=conv_integer(op1_in); t2:=conv_integer(op2_in); t3:=t1*t2; if t3<=99999999 then AUL_OUT<=conv_STD_LOGIC_VECTOR(t3,28); else AUL_OUT<=X"8888888" end if;when "100" => t1:=conv_i
42、nteger(op1_in);t2:=conv_integer(op2_in);if t2=0 then AUL_OUT<=X"8888888"else t3:=t2/t1;AUL_OUT<=conv_STD_LOGIC_VECTOR(t3,28);end if;when others => AUL_OUT<=op1_in;end case;end process;END AUL_architecture;-FSM模塊程序-LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY FSM ISPORT(clk :
43、 IN STD_LOGIC;rst : IN STD_LOGIC;sc : IN STD_LOGIC_VECTOR(15 downto 0);op1_add : OUT STD_LOGIC;op1_clear : OUT STD_LOGIC;op1_load : OUT STD_LOGIC;op2_load : OUT STD_LOGIC;oprand : OUT STD_LOGIC_VECTOR(2 downto 0);END FSM;ARCHITECTURE FSM_architecture OF FSM ISsignal current_state,next_state:STD_LOGI
44、C_VECTOR(2 downto 0):="000"signal key,number:STD_LOGIC;signal operate:STD_LOGIC:='0'signal temp0,temp1:STD_LOGIC_VECTOR(2 downto 0):="000"BEGINprocess(sc)begincase sc iswhen X"0000" =>key<='0'number<='0'when X"0001" =>key<
45、;='1'number<='0'-"/"when X"0002" =>key<='1'number<='0'-"X"when X"0004" =>key<='1'number<='0'-"-"when X"0008" =>key<='1'number<='0'-"+"wh
46、en X"0010" =>key<='1'number<='0'-"clear"when X"0020" =>key<='1'number<='1'-"9"when X"0040" =>key<='1'number<='1'-"6"when X"0080" =>key<='1'nu
47、mber<='1'-"3"when X"0100" =>key<='1'number<='1'-"0"when X"0200" =>key<='1'number<='1'-"8"when X"0400" =>key<='1'number<='1'-"5"when X"0800&
48、quot; =>key<='1'number<='1'-"2"when X"1000" =>key<='1'number<='0'-"="when X"2000" =>key<='1'number<='1'-"7"when X"4000" =>key<='1'number<='1'
49、;-"4"when X"8000" =>key<='1'number<='1'-"1"when others=>key<='0'number<='0'end case;end process;process(clk,rst)beginif (rst = '1') then current_state<="000"elsif(clk'event and clk = '1')
50、 then current_state <= next_state;end if;end process;process(current_state,rst,sc,key,number)beginif rst='1' thenop1_add <= '0'op1_clear <= '0' ;op1_load <= '0'op2_load <= '0'oprand <= "000"else case current_state iswhen "000&q
51、uot; => if key='1' thenif number='1' thennext_state<="001"else operate<= not operate;next_state<="010"end if;else next_state<="000" op1_clear<='0' oprand<="000" op1_load<='0' op2_load<='0'end i
52、f;when "001" =>-shuzicaozuoif number='1' then op1_add<='1'next_state<="001"else op1_add<='0'next_state<="000"end if;when "010" => if operate='0' thenoprand<=temp0;case sc is when X"0001" => temp
53、1<="100" ;-"/"op2_load<='1'op1_load<='1'if key='1' thennext_state<="010"else next_state<="000"end if;when X"0002" => temp1<="011" ;-"X"if key='1' thenop2_load<='1'op1
54、_load<='1'next_state<="010"else op2_load<='0'next_state<="000"end if;when X"0004" => temp1<="010" ;-"-"if key='1' thenop2_load<='1'op1_load<='1'next_state<="010"else next_st
55、ate<="000"end if;when X"0008" => temp1<="001" ;-"+"if key='1' thenop2_load<='1'op1_load<='1'next_state<="010"else next_state<="000"end if;when X"0010" => op1_clear<='1'tem
56、p0<="000"temp1<="000"if key='1' thennext_state<="010"else next_state<="000"end if;when X"1000" => temp1<="000" ;if key='1' thenop2_load<='1'op1_load<='1'next_state<="010"e
57、lse next_state<="000"end if;when others =>next_state<="000"end case;else next_state<="100"end if;when "100" => oprand<=temp1;op1_load<='1'case sc is when X"0001" => temp0<="100" ;if key='1' thenop2
58、_load<='1'op1_load<='1'next_state<="100"else next_state<="000"end if;when X"0002" => temp0<="011" ;if key='1' thenop2_load<='1'op1_load<='1'next_state<="100"else next_state<="000"end if;when X"0004" => temp0<="010" ;if key='1' thenop2_load<='1'op1_load<='1'next_state<="100"else next_state<="000&qu
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 21478-2024船舶與海上技術(shù)海上環(huán)境保護(hù)溢油處理詞匯
- GB/T 33492-2024二手貨交易市場(chǎng)經(jīng)營(yíng)管理規(guī)范
- 2024鋁合金材料研發(fā)與應(yīng)用項(xiàng)目合同范本3篇
- 二零二五年度網(wǎng)絡(luò)安全事件應(yīng)急處理與響應(yīng)計(jì)劃合同2篇
- 二零二五版辦公場(chǎng)地租賃信息咨詢服務(wù)合同2篇
- 2024年高端設(shè)備采購(gòu)與技術(shù)轉(zhuǎn)讓合同
- 2024水磨石新型裝飾材料研發(fā)與應(yīng)用承包合同3篇
- 二零二五年度5人合伙人工智能教育培訓(xùn)合同3篇
- 二零二五年度遺產(chǎn)分配與境外遺產(chǎn)繼承協(xié)議3篇
- 二零二五年度出租車(chē)承包合同標(biāo)準(zhǔn)條款3篇
- 深圳2024-2025學(xué)年度四年級(jí)第一學(xué)期期末數(shù)學(xué)試題
- 中考語(yǔ)文復(fù)習(xí)說(shuō)話要得體
- 中風(fēng)后認(rèn)知障礙中醫(yī)臨床路徑
- 罌粟湯_朱氏集驗(yàn)方卷十_方劑加減變化匯總
- 《我相信---楊培安》歌詞-勵(lì)志歌曲
- 做一個(gè)幸福班主任
- 初中班主任案例分析4篇
- 公司7s管理組織實(shí)施方案
- Q∕GDW 12147-2021 電網(wǎng)智能業(yè)務(wù)終端接入規(guī)范
- 仁愛(ài)英語(yǔ)單詞默寫(xiě)本(全六冊(cè))英譯漢
- 公園廣場(chǎng)綠地文化設(shè)施維修改造工程施工部署及進(jìn)度計(jì)劃
評(píng)論
0/150
提交評(píng)論