




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于FPGA的數字時鐘設計目錄TOC\o"1-4"\h\u摘要 1Abstract 2第一章 緒論 11.1. 選題意義與研究現實狀況 11.2. 國內外研究及趨勢 11.3. 論文構造 2第二章 編程軟件及語言簡介 32.1 QuartersII編程環境簡介 32.1.1 菜單欄 32.1.2 工具欄 82.1.3 功能仿真流程 92.2 VerilogHDL語言介 102.2.1 什么是verilogHDL語言 102.2.2 重要功能 11第三章 數字化時鐘系統硬件設計 133.1 系統關鍵板電路分析 133.2 系統主板電路分析 153.2.1 時鐘模塊電路 153.2.2 顯示電路 153.2.3 鍵盤控制電路 173.2.4 蜂鳴電路設計 17第四章 數字化時鐘系統軟件設計 184.1 整體方案簡介 184.1.1 整體設計描述 184.1.2 整體信號定義 194.1.3 模塊框圖 204.2 分頻模塊實現 204.2.1 分頻模塊描述 204.2.2 分頻模塊設計 204.2.3 分頻模塊仿真 214.3 計時模塊實現 214.3.1 計時模塊描述與實現 214.3.2 計時模塊仿真 234.4 按鍵處理模塊實現 234.4.1 按鍵處理模塊描述 234.4.2 按鍵去抖處理模塊設計 244.4.3 按鍵模塊去抖仿真 244.5 鬧鐘模塊實現 254.5.1 鬧鐘模塊設計 254.5.2 鬧鐘設定模塊仿真 254.6 蜂鳴器模塊實現 254.6.1 蜂鳴器模塊描述 254.6.2 蜂鳴器模塊實現 264.6.3 蜂鳴器模塊仿真 274.7 顯示模塊實現 274.7.1 顯示模塊描述 274.7.2 顯示模塊實現 274.7.3 顯示模塊仿真 29第五章 系統調試及運行成果分析 305.1 硬件調試 305.2 軟件調試 315.3 調試過程及成果 315.4 調試注意事項 33第六章 總結和展望 345.5 總結 345.6 展望 34參照文獻 35致謝 36附錄 37緒論選題意義與研究現實狀況在這個時間就是金錢的年代里,數字電子鐘已成為人們生活中的必需品。目前應用的數字鐘不僅可以實現對年、月、日、時、分、秒的數字顯示,還能實現對電子鐘所在地點的溫度顯示和智能鬧鐘功能,廣泛應用于車站、醫院、機場、碼頭、廁所等公共場所的時間顯示。伴隨現場可編程門陣列(fieldprogram-mablegatearray,FPGA)的出現,電子系統向集成化、大規模和高速度等方向發展的趨勢愈加明顯,作為可編程的集成度較高的ASIC,可在芯片級實現任意數字邏輯電路,從而可以簡化硬件電路,提高系統工作速度,縮短產品研發周期。故運用FPGA這一新的技術手段來研究電子鐘有重要的現實意義。設計采用FPGA現場可編程技術,運用自頂向下的設計思想設計電子鐘。防止了硬件電路的焊接與調試,并且由于FPGA的I/O端口豐富,內部邏輯可隨意更改,使得數字電子鐘的實現較為以便。本課題使用CycloneEP1C6Q240的FPGA器件,完畢實現一種可以計時的數字時鐘。該系統具有顯示時、分、秒,智能鬧鐘,按鍵實現校準時鐘,整點報時等功能。滿足人們得到精確時間以及時間提醒的需求,以便人們生活。國內外研究及趨勢伴隨人們生活水平的提高和生活節奏的加緊,對時間的規定越來越高,精確數字計時的消費需求也是越來越多。二十一世紀的今天,最具代表性的計時產品就是電子時鐘,它是近代世界鐘表業界的第三次革命。第一次是擺和擺輪游絲的發明,相對穩定的機械振蕩頻率源使鐘表的走時差從分級縮小到秒級,代表性的產品就是帶有擺或擺輪游絲的機械鐘或表。第二次革命是石英晶體振蕩器的應用,發明了走時精度更高的石英電子鐘表,使鐘表的走時月差從分級縮小到秒級。第三次革命就是單片機數碼計時技術的應用,使計時產品的走時日差從分級縮小到1/600萬秒,從原有老式指針計時的方式發展為人們平常更為熟悉的夜光數字顯示方式,直觀明了,并增長了全自動日期、星期的顯示功能,它更符合消費者的生活需求!因此,電子時鐘的出現帶來了鐘表計時業界跨躍性的進步。我國生產的電子時鐘有諸多種,總體上來說以研究多功能電子時鐘為主,使電子時鐘除了原有的顯示時間基本功能外,還具有鬧鈴,報警等功能。商家生產的電子時鐘更從質量,價格,實用上考慮,不停的改善電子時鐘的設計,使其愈加的具有市場。論文構造第一章詳細論述了近些年來,數字化時鐘系統研究領域的動態及整個數字化時鐘系統的發展狀況,同步分析了所面臨的問題與處理方案,從而提出了本論文的研究任務。第二章從研究任務著手,選擇符合設計規定的常用芯片及其他元器件,詳細論述了各接口電路的設計與連接,以模塊化的形式,整合數字化時鐘硬件的設計從小到大,從局部到整體,循序漸進,最終實現一種功能齊全的數字化時鐘系統。第三章根據系統設計規定,著手對數字化時鐘系統軟件進行功能的實現,將各功能模塊有機結合,實現時鐘走時,實現鬧鈴、整點報時附加功能。第四章按照設計思緒,在聯機調試過程中,對時鐘系統的局限性和缺陷進行分析,將調試過程作重點的記錄。第五章對全文的總結,對本系統功能實現以及制作過程中需要注意的方面,及整個系統軟件編寫中所吸取的經驗教訓進行論述,同步,也對整個研究應用進行展望。
編程軟件及語言簡介QuartersII編程環境簡介運行環境設計采用quartusII軟件實現,因此針對軟件需要用到的某些功能在這里進行描述.QuartusII軟件界面簡樸易操作,如下圖2.1:圖2.1QuartusII軟件界面圖菜單欄【File】菜單QuartusII的【File】菜單除具有文獻管理的功能外,尚有許多其他選項圖2.2QuartusII菜單欄圖(1)【New】選項:新建工程或文獻,其下尚有子菜單 【NewQuartusIIProject】選項:新建工程。 【DesignFile】選項:新建設計文獻,常用的有:AHDL文本文獻、VHDL文本文獻、VerilogHDL文本文獻、原理圖文獻等。 【VectorWaveformFive】選項:矢量波形文獻。(2)【Open】選項:打開一種文獻。(3)【NewProjectWizard】選項:創立新工程。點擊后彈出對話框。單擊對話框最上第一欄右側的“…”按鈕,找到文獻夾已存盤的文獻,再單擊打開按鈕,既出現如圖所示的設置狀況。對話框中第一行表達工程所在的工作庫文獻夾,第二行表達此項工程的工程名,第三行表達頂層文獻的實體名,一般與工程名相似。圖2.3QuartusII新建工程圖(4)【creat/update】選項:生成元件符號。可以將設計的電路封裝成一種元件符號,供后來在原理圖編輯器下進行層次設計時調用。【View】菜單:進行全屏顯示或對窗口進行切換,包括層次窗口、狀態窗口、消息窗口等。圖2.4QuartusII菜單欄全屏切換圖【Assignments】菜單(1)【Device】選項:為目前設計選擇器件。(2)【Pin】選項:為目前層次樹的一種或多種邏輯功能塊分派芯片引腳或芯片內的位置。(3)【TimingAnanlysisSetting】選項:為目前設計的tpd、tco、tsu、fmax等時間參數設定期序規定。(4)【EDAtoolsetting】選項:EDA設置工具。使用此工具可以對工程進行綜合、仿真、時序分析,等等。EDA設置工具屬于第三方工具。(5)【Setting】選項:設置控制。可以使用它對工程、文獻、參數等進行修改,還可以設置編譯器、仿真器、時序分析、功耗分析等。(6)【assignmenteditor】選項:任務編輯器。(7)【pinplanner】選項:可以使用它將所設計電路的I/O引腳合理的分派到已設定器件的引腳上。圖2.5QuartusII菜單欄設定引腳下拉圖【processing】菜單【processing】菜單的功能是對所設計的電路進行編譯和檢查設計的對的性。(1)【Stopprocess】選項:停止編譯設計項目。(2)【StartCompilation】選項:開始完全編譯過程,這里包括分析與綜合、適配、裝配文獻、定期分析、網表文獻提取等過程。(3)【analyzecurrentfile】選項:分析目前的設計文獻,重要是對目前設計文件的語法、語序進行檢查。(4)【compilationreport】選項:適配信息匯報,通過它可以查看詳細的適配信息,包括設置和適配成果等。(5)【startsimulation】選項:開始功能仿真。(6)【simulationreport】選項:生成功能仿真匯報。(7)【compilertool】選項:它是一種編譯工具,可以有選擇對項目中的各個文件進行分別編譯。(8)【simulationtool】選項:對編譯過電路進行功能仿真和時序仿真。(9)【classictiminganalyzertool】選項:classic時序仿真工具。(10)【powerplaypoweranalyzertool】選項:PowerPlay功耗分析工具。圖2.6QuartusII菜單欄運行下拉圖【tools】菜單【tools】菜單的功能是(1)【runEDAsimulationtool】選項:運行EDA仿真工具,EDA是第三方仿真工具。(2)【runEDAtiminganalyzertool】選項:運行EDA時序分析工具,EDA是第三方仿真工具。(3)【Programmer】選項:打開編程器窗口,以便對Altera的器件進行下載編程。圖2.7QuartusII仿真菜單下拉圖工具欄工具欄緊鄰菜單欄下方,它其實是各菜單功能的快捷按鈕組合區。2.8QuartusII菜單欄圖圖2.9QuartusII菜單欄按鍵功能圖功能仿真流程新建仿真文獻圖2.10QuartusII菜單欄新建文獻夾圖功能方正操作在菜單上點processing在下拉菜單中,如下圖:圖2.11QuartusII菜單欄processing下拉圖VerilogHDL語言介什么是verilogHDL語言VerilogHDL是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數字系統建模。被建模的數字系統對象的復雜性可以介于簡樸的門和完整的電子數字系統之間。數字系統可以按層次描述,并可在相似描述中顯式地進行時序建模。VerilogHDL語言具有下述描述能力:設計的行為特性、設計的數據流特性、設計的構造構成以及包括響應監控和設計驗證方面的時延和波形產生機制。所有這些都使用同一種建模語言。此外,VerilogHDL語言提供了編程語言接口,通過該接口可以在模擬、驗證期間從設計外部訪問設計,包括模擬的詳細控制和運行。VerilogHDL語言不僅定義了語法,并且對每個語法構造都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型可以使用Verilog仿真器進行驗證。語言從C編程語言中繼承了多種操作符和構造。VerilogHDL提供了擴展的建模能力,其中許多擴展最初很難理解。不過,VerilogHDL語言的關鍵子集非常易于學習和使用,這對大多數建模應用來說已經足夠。當然,完整的硬件描述語言足以對從最復雜的芯片到完整的電子系統進行描述。重要功能下面列出的是Verilog硬件描述語言的重要能力:基本邏輯門,例如and、or和nand等都內置在語言中。顧客定義原語(UP)創立的靈活性。顧客定義的原語既可以是組合邏輯原語,也可以是時序邏輯原語。開關級基本構造模型,例如pmos和nmos等也被內置在語言中。提供顯式語言構造指定設計中的端口到端口的時延及途徑時延和設計的時序檢查。可采用三種不一樣方式或混合方式對設計建模。這些方式包括:行為描述方式—使用過程化構造建模;數據流方式—使用持續賦值語句方式建模;構造化方式—使用門和模塊實例語句描述建模。VerilogHDL中有兩類數據類型:線網數據類型和寄存器數據類型。線網類型表達構件間的物理連線,而寄存器類型表達抽象的數據存儲元件。可以描述層次設計,可使用模塊實例構造描述任何層次。設計的規模可以是任意的;語言不對設計的規模(大小)施加任何限制。VerilogHDL不再是某些企業的專有語言而是IEEE原則。人和機器都可閱讀Verilog語言,因此它可作為EDA的工具和設計者之間的交互語言。VerilogHDL語言的描述能力可以通過使用編程語言接口(PLI)機制深入擴展。PLI是容許外部函數訪問Verilog模塊內信息、容許設計者與模擬器交互的例程集合。設計可以在多種層次上加以描述,從開關級、門級、寄存器傳送級(RTL)到算法級,包括進程和隊列級。可以使用內置開關級原語在開關級對設計完整建模。同一語言可用于生成模擬鼓勵和指定測試的驗證約束條件,例如輸入值的指定。VerilogHDL可以監控模擬驗證的執行,即模擬驗證執行過程中設計的值可以被監控和顯示。這些值也可以用于與期望值比較,在不匹配的狀況下,打印匯報消息。在行為級描述中,VerilogHDL不僅可以在RTL級上進行設計描述,并且可以在體系構造級描述及其算法級行為上進行設計描述。可以使用門和模塊實例化語句在構造級進行構造描述。如圖顯示了VerilogHDL的混合方式建模能力,即在一種設計中每個模塊均可以在不一樣設計層次上建模。VerilogHDL還具有內置邏輯函數,例如&(按位與)和|(按位或)。對高級編程語言構造,例如條件語句、狀況語句和循環語句,語言中都可以使用。可以顯式地對并發和定期進行建模。提供強有力的文獻讀寫能力。語言在特定狀況下是非確定性的,即在不一樣的模擬器上模型可以產生不一樣的成果;例如,事件隊列上的事件次序在原則中沒有定義。圖2.12混合設計層次圖
數字化時鐘系統硬件設計系統關鍵板電路分析本系統采用的開發平臺標配的關鍵板是QuickSOPC,可以實現EDA、SOP和DSP的試驗及研發。本系統采用QuickSOPC原則配置為Altera企業的EP1C6Q240C8芯片。關鍵板的硬件資源關鍵板采用4層板精心設計,采用120針接口。QuickSOPC關鍵板的硬件原理框圖如圖2-1所示:圖3.1QuickSOPC硬件方塊圖FPGA電路關鍵板QuickSOPC上所用的FPGA為Altera企業Cyclone系列的EP1C6Q240。EP1C6Q240包具有5980個邏輯單元和92Kbit的片上RAM。EP1C6Q240有185個顧客I/O口,封裝為240-PinPQFP。關鍵板EP1C6Q240器件特性如表2-1。表3-1關鍵EP1C6Q240器件特性:特性關鍵板EP1C6Q240器件邏輯單元(LE)5980M4KRAM塊20RAM總量(bit)92160PLL(個)2最大顧客I/O數(個)185配置二進制文獻(.rbf)大小(bit)1167216可選串行積極配置器件EPCS1/EPCS4/EPCS16配置電路CycloneFPGA的配置方式包括:積極配置模式、被動配置模式以及JTAG配置模式。本系統采用的是JTAG配置模式下載配置數據到FPGA。通過JTAG成果,運用QuartusII軟件可以直接對FPGA進行單獨的硬件重新配置。QuartusII軟件在編譯時會自動生成用于JTAG配置的.sof文獻。CycloneFPGA設計成的JTAG指令比其他任何器件操作模式的優先級都高,因此JTAG配置可隨時進行而不用等待其他配置模式完畢。JTAG模式使用4個專門的信號引腳:TDI、TDO、TMS以及TCK。JTAG的3個輸入腳TDI、TMS和TCK具有內部弱上拉,上拉電阻大概為25kΩ。在JGTA進行配置的時候,所有顧客I/O扣都為高阻態。時鐘電路FPGA內部沒振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時鐘頻率范圍為15.625~387MHz,通過內部的PLL電路后可輸出15.625~275MHz的系統時鐘。當輸入時鐘頻率較低時,可以使用FPGA的內部PLL調整FPGA所需的系統時鐘,使系統運行速度更快。關鍵板包括一種48MHz的有源晶振作為系統的時鐘源。如圖2-2所示。為了得到一種穩定、精確的時鐘頻率,有源晶振的供電電源通過了LC濾波。本系統硬件整體設計框圖如圖2-3所示:圖3.2數字時鐘系統硬件電路總體框圖系統主板電路分析時鐘模塊電路FPGA內部沒振蕩電路,使用有源晶振是比較理想的選擇。EP1C6Q240C8的輸入的時鐘頻率范圍為15.625~387MHz,通過內部的PLL電路后可輸出15.625~275MHz的系統時鐘。當輸入時鐘頻率較低時,可以使用FPGA的內部PLL調整FPGA所需的系統時鐘,使系統運行速度更快。關鍵板包括一種50MHz的有源晶振作為系統的時鐘源。為了得到一種穩定、精確的時鐘頻率,有源晶振的供電電源通過了LC濾波。圖3.3系統時鐘電路圖顯示電路由于本設計需要顯示時間信息包括:時、分、秒,顯因此采用主板上七段數碼管顯示電路與系統連接實現顯示模塊的功能。主板上七段數碼管顯示電路如圖2-4所示,RP4和RP6是段碼上的限流電阻,位碼由于電流較大,采用了三極管驅動。圖3.4七段數碼管顯示電路圖數碼管LED顯示是工程項目中使用較廣的一種輸出顯示屏件。常見的數管有共陰和共陽2種。共陰數碼管是將8個發光二極管的陰極連接在一起作為公共端,而共陽數碼管是將8個發光二極管的陽極連接在一起作為公共端。公共端常被稱作位碼,而將其他的8位稱作段碼。如圖2-5所示為共陽數碼管及其電路,數碼管有8個段分別為:h、g、f、e、d、c、b和a(h為小數點),只要公共端為高電平“1”,某個段輸出低電平“0”則對應的段就亮。圖3.5七段數碼管顯示電路圖從電路可以看出,數碼管是共陽的,當位碼驅動信號為0時,對應的數碼管才能操作;當段碼驅動信號為0時,對應的段碼點亮。鍵盤控制電路鍵盤控制電路要實現時鐘系統調時的功能和鬧鈴開關的功能。本設計采用主板上的獨立鍵盤來實現這兩個功能。當鍵盤被按下是為“0”,未被按下是為“1”。電路連接圖如圖2-6所示。電路中為了防止FPGA的I/O設為輸出且為高電平在按鍵下直接對地短路,電阻RP9、RP10對此都能起到保護作用。圖3.6鍵盤電路圖蜂鳴電路設計如圖2-7所示,蜂鳴器使用PNP三極管進行驅動控制,蜂鳴器使用的是交流蜂鳴器。當在BEEP輸入一定頻率的脈沖時,蜂鳴器蜂鳴,變化輸入頻率可以變化蜂鳴器的響聲。因此可以運用一種PWM來控制BEEP,通過變化PWM的頻率來得到不一樣的聲響,也可以用來播放音樂。若把JP7斷開,Q4截止,蜂鳴器停止蜂鳴。圖3.7蜂鳴電路圖
數字化時鐘系統軟件設計整體方案簡介整體設計描述設計中的數字時鐘,帶有按鍵校準,定點報時,數碼管顯示等功能。因此數字時鐘所包括的模塊可分為,分頻模塊,按鍵模塊,計時校準模塊,鬧鐘模塊,LED顯示模塊,模塊之間的關系下圖:圖4.1整體模塊框圖針對框圖流程,設定出各個模塊的需求:分頻電路:針對計時器模塊與鬧鐘設定模塊的需求,可以懂得分頻模塊需要生成一種1Hz的頻率信號,保證計時模塊可以正常計數。計時器模塊:計數模塊的作用是收到分頻模塊1Hz頻率的信號線,能進行對的計時,并且可以通過按鍵進行時間的修改,且當整點時,給蜂鳴器產生使能信號,進行整點報時,播放音樂。鬧鐘設定模塊:可根據按鍵的設定鬧鐘的時間,當計時模塊的時間與鬧鐘設定模塊的時間相等的時候,給蜂鳴器一種使能信號,蜂鳴器鬧鈴。。蜂鳴器模塊:根據計時模塊,鬧鐘模塊給出的使能信號,鑒定蜂鳴器是整點報時,還是鬧鐘響鈴。整點報時會播放音樂,鬧鐘時嘀嘀嘀報警。LED顯示模塊:根據實際的需求顯示計時模塊的時間,還是鬧鐘設定模塊的時間,8個七段碼LED數碼管,進行掃描方式顯示數據。整體信號定義對整個模塊進行信號定義。接口及寄存器定義moduleclock(clk,key,dig,seg,beep);//模塊名clockinputclk; //輸入時鐘input[4:0]key; //輸入按鍵,key[3:0]分別為秒,分鐘,小時的增長按鍵。Key[4]為鬧鐘設置按鍵,key[5]為校準設置按鍵。output[7:0]dig; //數碼管選擇輸出引腳aoutput[7:0]seg; //數碼管段輸出引腳outputbeep; //蜂鳴器輸出端reg[7:0]seg_r=8'h0; //定義數碼管輸出寄存器reg[7:0]dig_r; //定義數碼管選擇輸出寄存器reg[3:0]disp_dat; //定義顯示數據寄存器reg[8:0]count1; //定義計數寄存器reg[14:0]count; //定義計數中間寄存器reg[23:0]hour=24'h235956; //定義目前時刻寄存器reg[23:0]clktime=24'h000000; //定義設定鬧鐘reg[1:0]keyen=2'b11; //定義標志位reg[4:0]dout1=5'b11111;reg[4:0]dout2=5'b11111;reg[4:0]dout3=5'b11111; //寄存器wire[4:0]key_done; //按鍵消抖輸出reg[15:0]beep_count=16'h0; //蜂鳴器寄存器reg[15:0]beep_count_end=16'hffff;//蜂鳴器截止寄存器regclktime_en=1'b1; //鬧鐘使能寄存器regsec; //1秒時鐘regclk1; //1ms時鐘regbeep_r; //寄存器wirebeepen; //鬧鐘使能信號模塊框圖通過quartusII的creatsymbleforcurrentfile功能生成框圖如下:圖4.2生成的符號圖分頻模塊實現,計數電路所需時鐘信號為1HZ,而系統時鐘為48MHZ,因此要對系統時鐘進行分頻以來滿足電路的需要。分頻模塊實現分頻模塊描述對于分頻模塊,關鍵是生成個1Hz的時鐘信號。考慮到仿真的需要,模塊中間生成1個1kHz的時鐘信號。1Hz的信號的產生用來產生時鐘的秒脈沖,框圖如下圖4.2:圖4.3分頻模塊圖分頻模塊設計本系統程序設計時鐘的精確與否重要取決于秒脈沖的精確度。為了保證計時精確,我們對系統時鐘48MHz進行了48000分頻生成1kHz信號clk1,在通過1kHz信號,生成1Hz信號clk。//1ms信號產生部分always@(posedgeclk) //定義clock上升沿觸發begin count=count+1'b1; if(count==15'd24000) //0.5mS到了嗎? begin count=15'd0; //計數器清零 clk1=~clk1; //置位秒標志 endend//秒信號產生部分always@(posedgeclk1) //定義clock上升沿觸發begin count1=count1+1'b1; if(count1==9'd500) //0.5S到了嗎? begin count1=9'd0; //計數器清零 sec=~sec; //置位秒標志 endEnd分頻模塊仿真通過設置功能仿真,檢查代碼的對的性仿真成果圖4.4分頻模塊波形仿真圖右上圖可以懂得,計數寄存器count累加到23999時,重新變為0,合計數了24000個值。觸發clk1跳變,使得count1加一,count1累加到499的時候,下一種數據為0,共技術500個值。因此,sec信號的頻率為1Hz,滿足設計規定。計時模塊實現計時模塊描述與實現計時模塊是采用16進制來實現的,將hour[23,0]定義為其時分秒,其中hour[3,0]為其秒鐘上的個位數值,hour[4,7]為其秒鐘上的十位數值,以此類推分鐘、時鐘的個位和十位。當clk脈沖過來時,秒個位hour[3,0]便開始加1,當加到9時,秒十位加1,與此同步秒個位清零,繼續加1。當秒十位hour[7,4]為5秒個位為9時(即59秒),分個位hour[11,8]加1,與此同步秒個位和秒十位都清零。以此類推,當分十位hour[15,12]為5和分個位為9時(即59分),時個位加1,與此同步分個位hour[19,16]和分十位都清零。當時分十位[23,20]為2和分個位為4,所有清零,開始重新計時。從功能上講分別為模60計數器,模60計數器和模24計數器。//時間計算及校準部分always@(negedgesec)//計時處理 begin hour[3:0]=hour[3:0]+1'b1; //秒加1 if(hour[3:0]>=4'ha) //加到10,復位 begin hour[3:0]=4'h0; hour[7:4]=hour[7:4]+1'b1; //秒的十位加一 if(hour[7:4]>=4'h6) //加到6,復位 begin hour[7:4]=4'h0; hour[11:8]=hour[11:8]+1'b1; //分個位加一 if(hour[11:8]>=4'ha) //加到10,復位 begin hour[11:8]=4'h0; hour[15:12]=hour[15:12]+1'b1; //分十位加一 if(hour[15:12]>=4'h6) //加到6,復位 begin hour[15:12]=4'h0; hour[19:16]=hour[19:16]+1'b1; //時個位加一 if(hour[19:16]>=4'ha) //加到10,復位 begin hour[19:16]=4'h0; hour[23:20]=hour[23:20]+1'b1; //時十位加一 end if(hour[23:16]>=8'h24) //加到24,復位 hour[23:16]=8'h0; end end end end endend計時模塊仿真對計時模塊進行仿真,記錄仿真波形圖4.5計時模塊仿真圖由上圖可見,當sec信號下降沿跳變時,hour寄出去會加1,也就相稱于跳了一秒鐘時間。當hour的時間為235959是,下一種計數器的值為000000,hour寄存器歸零,相稱于午夜0點的時刻。仿真的成果到達預期,通過。按鍵處理模塊實現按鍵處理模塊描述框圖如下圖4.4:圖4.6按鍵控制功能圖模塊講計時部分和時間調整部分整合到一起,正常態的時候,時間正常運行,當key[5]被按下時,進入時間校準,可以通過key[2:0]三個鍵,分別對秒,分,時進行加1操作,從而進行時間校準。當key[3]被按下時,進入鬧鐘設定,可以通過key[2:0]三個鍵,分別對秒,分,時進行加1操作,從而進行鬧鐘的設定。圖4.7按鍵模塊仿真圖通過按鍵key進行仿真控制,可以發現clktime會伴隨按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真成果滿足設計規定。按鍵去抖處理模塊設計按鍵模塊實現去抖處理,及乒乓按鍵設計,保證背面的計時模塊與鬧鐘模塊的功能實現。assignkey_done=key|dout3; //按鍵消抖輸出always@(posedgecount1[5]) //按鍵去噪聲begindout1<=key;dout2<=dout1;dout3<=dout2; //持續賦值endalways@(negedgekey_done[4])beginkeyen[1]=~keyen[1]; //校準按鍵轉換乒乓按鍵endalways@(negedgekey_done[3])begin keyen[0]=~keyen[0]; //定期按鍵轉換乒乓按鍵End按鍵模塊去抖仿真對于按鍵去抖動仿真,同樣才用功能仿真方式,這里不再反復設置與操作,如同上面的分頻模塊進行設置并進行仿真。Key寄存器為輸入按鍵,初始化電路為高電平,當有按鍵按下去的時候,變為低電平。因此變化key的值,觀測仿真成果與否對的。功能仿真,記錄仿真成果,如下圖:圖4.8按鍵模塊仿真圖通過上圖可以懂得,key_done會伴隨key的變化而發生對應的變化,并有消除噪聲的作用,功能仿真對的,到達設計目的。鬧鐘模塊實現鬧鐘模塊設計本設計中,判斷鬧鈴時間到,是通過鑒定期鐘系統實時時間的時鐘與分鐘與否分別等于設定的鬧鈴時間的時鐘、分鐘、秒鐘。當時間(hour[23:0])等于設定的鬧鐘時間(clktime[23:0])時,鬧鐘觸發時,播放嘀嘀嘀報警聲,鬧鐘會響10秒的時間(clktime[23:0]+10>=hour[23:0])。正常狀況下,鬧鈴時間到會進行為時1分鐘的蜂鳴報時,可以通過按下鬧鐘按鍵key[3]使其停止。當鬧鈴設置為整點是,會先進行整點報時,然后進入鬧鈴。圖4.9鬧鐘控制鍵功能圖鬧鐘設定模塊仿真圖4.10鬧鐘模塊仿真圖通過按鍵key進行仿真控制,可以發現clktime會伴隨按鍵的按下,分別有時鐘,分鐘秒鐘加1,仿真成果滿足設計規定。蜂鳴器模塊實現蜂鳴器模塊描述蜂鳴器模塊負責整點報時,和鬧鈴的時候進行出聲的作用。整點報時的時候,播放音樂,10秒音樂播報完后停止整點報時。鬧鐘觸發時,播放嘀嘀嘀報警聲。當鬧鈴設置為整點是,會先進行整點報時,然后進入鬧鈴。當鬧鐘設定鍵被按下,響起的蜂鳴聲會被屏蔽。模塊框圖如下圖4.9:蜂鳴器模塊實現//蜂鳴器的計數定期器always@(posedgeclk)beginbeep_count=beep_count+1'b1; //計數器加1if((beep_count==beep_count_end)&&(!(beep_count_end==16'hffff))) begin beep_count=16'h0; //計數器清零 beep_r=~beep_r; //取反輸出信號 endendalways@(posedgeclk)beginif(!beepen)case(hour[3:0]) //整點報時音樂內容 4'h0:beep_count_end=16'h6a88; //中音6的分頻系數值 4'h1:beep_count_end=16'h8637; //中音4的分頻系數值 4'h2:beep_count_end=16'h7794; //中音5的分頻系數值 4'h3:beep_count_end=16'hb327; //中音1的分頻系數值 4'h5:beep_count_end=16'hb327; //中音1的分頻系數值 4'h6:beep_count_end=16'h7794; //中音5的分頻系數值 4'h7:beep_count_end=16'h6a88; //中音6的分頻系數值 4'h8:beep_count_end=16'h8637; //中音4的分頻系數值 default:beep_count_end=16'hffff; //其他狀況無聲endcaseelseif(!clktime_en)begin case(count1[8:5]) //鬧鐘嘀嘀嘀聲內容 4'h0,4'h2,4'h6,4'h8:beep_count_end=16'h2f74; //高音7的分頻系數值 default:beep_count_end=16'hffff; //其他狀況不出聲 endcaseendelse beep_count_end=16'hffff;end//鬧鈴使能控制always@(posedgeclk)begin if(!keyen[0]) //判斷鬧鈴與否有取消 clktime_en=1'b1; //鬧鈴響起后,需要手動關閉鬧鈴 elseif((clktime[23:0]<=hour[23:0])&(clktime[23:0]+10>=hour[23:0])) //鬧鈴過一點時間,自動關閉。 clktime_en=1'b0;end蜂鳴器模塊仿真功能仿真,記錄波形圖:圖4.11蜂鳴器模塊仿真圖通過上圖可以看出來,當hour與clktime相等時,鬧鈴被觸發,通過一段時間后,鬧鈴停止工作,設計滿足規定。顯示模塊實現顯示模塊描述此設計中的LED七段數碼管顯示模塊重要顯示時間的時、分、秒信息,數碼管為共陽的。在此設計中占非常重要的地位,它是保證時間能直觀展現的橋梁。在設計過程中,首先進行程序編寫和調試的應當是顯示模塊。下面輸入的端口為鬧鐘設定鍵被按下,七段數碼管會顯示鬧鐘設定狀況下數碼管所對應的數字。正常時間狀況、鬧鐘設定以及查看鬧鐘所設定好的時間都是同樣的原理,當他們被按下數碼管會顯示對應的模式對應的數字。圖4.12顯示模塊圖顯示模塊實現//數碼管顯示內容always@(posedgeclk)begin case({keyen[0],count1[3:1]}) //選擇掃描顯示數據 4'd0:disp_dat=clktime[3:0]; //秒個位 4'd1:disp_dat=clktime[7:4]; //秒十位 4'd2:disp_dat=4'ha; //顯示"-" 4'd3:disp_dat=clktime[11:8]; //分個位 4'd4:disp_dat=clktime[15:12]; //分十位 4'd5:disp_dat=4'ha; //顯示"-" 4'd6:disp_dat=clktime[19:16]; //時個位 4'd7:disp_dat=clktime[23:20]; //時十位 4'd8:disp_dat=hour[3:0]; //秒個位 4'd9:disp_dat=hour[7:4]; //秒十位 4'd10:disp_dat=4'ha; //顯示"-" 4'd11:disp_dat=hour[11:8]; //分個位 4'd12:disp_dat=hour[15:12]; //分十位 4'd13:disp_dat=4'ha; //顯示"-" 4'd14:disp_dat=hour[19:16]; //時個位 4'd15:disp_dat=hour[23:20]; //時十位 default:disp_dat=4'ha; //顯示"-" endcase//數碼管選擇 case(count1[3:1]) //選擇數碼管顯示位 3'd0:dig_r=8'b11111110; //選擇第一種數碼管顯示 3'd1:dig_r=8'b11111101; //選擇第二個數碼管顯示 3'd2:dig_r=8'b11111011; //選擇第三個數碼管顯示 3'd3:dig_r=8'b11110111; //選擇第四個數碼管顯示 3'd4:dig_r=8'b11101111; //選擇第五個數碼管顯示 3'd5:dig_r=8'b11011111; //選擇第六個數碼管顯示 3'd6:dig_r=8'b10111111; //選擇第七個數碼管顯示 3'd7:dig_r=8'b01111111; //選擇第八個數碼管顯示 endcaseend//數碼管顯示always@(posedgeclk)begincase(disp_dat)4'h0:seg_r=8'hc0; //顯示04'h1:seg_r=8'hf9; //顯示14'h2:seg_r=8'ha4; //顯示24'h3:seg_r=8'hb0; //顯示34'h4:seg_r=8'h99; //顯示44'h5:seg_r=8'h92; //顯示54'h6:seg_r=8'h82; //顯示64'h7:seg_r=8'hf8; //顯示74'h8:seg_r=8'h80; //顯示84'h9:seg_r=8'h90; //顯示94'ha:seg_r=8'hbf; //顯示-default:seg_r=8'hff; //不顯示endcaseif((count1[3:1]==3'd2)&sec)seg_r=8'hff;End顯示模塊仿真編譯程序,進行功能仿真,記錄仿真圖形:圖4.13顯示模塊仿真圖通過上面的圖可以懂得,LED數碼管是通過掃描的方式實現數據更新,通過dig,seg寄存器的數據可以懂得,數據能正常顯示,滿足設計規定。
系統調試及運行成果分析硬件調試在軟件聯機調試之前,首先要確定硬件與否完全對的。檢查方面重要包括:(1)PC機的接口和關鍵板上的JTAG下載口與否連接對的;(2)蜂鳴器的電路與否為通路;(3)檢查接地、電源線與否連接對的;(4)用示波器檢測關鍵板的各個引腳與否有信號輸出;(5)LED七段數碼管顯示正常。引腳分布如下表5-1:表5-1引腳分布圖:信號引腳闡明信號引腳闡明seg[0]169數碼管斷信號選擇dig[0]160數碼管片選信號控制seg[1]170dig[1]159seg[2]167dig[2]162seg[3]168dig[3]161seg[4]165dig[4]215seg[5]166dig[5]216seg[6]163dig[6]213seg[7]164dig[7]214key[0]121秒加1控制clk28時鐘信號key[1]122分加1控制Beep175蜂鳴器信號key[2]123時加1控制key[3]124鬧鐘控制key[4]143時間校準控制軟件調試在確定好硬件系統對的之后,我對本設計進行分模塊的軟件調試。功能模塊先后調試次序為:顯示模塊→時間模塊→鍵盤模塊→時間設定及其顯示模塊→鬧鈴、整點報時設定及其顯示模塊。每完畢一種模塊就與前一種已完畢的模塊結合起來調試,直至實現對應功能,再編寫下一模塊程序。在與主程序銜接時,主程序和各子程序也需作對應的改動,以便與子程序更好的銜接,尤其是顯示子程序需作較大改動,以便對不一樣內容進行顯示。軟件編譯后的成果:圖5.1軟件編譯成果圖通過上圖5.1可以懂得,整個設計值用了383個邏輯單元,占用很少的資源。調試過程及成果調試過程按照:顯示模塊→時間模塊→鍵盤模塊→時間設定及其顯示模塊→鬧鈴、整點報時設定及其顯示模塊的次序進行調試。(1)顯示模塊調試本系統功能完整運行離不開對的顯示,因此顯示模塊的實現非常重要,在聯機調試第一步就要確定系統的顯示與否可以正常運行。將需要顯示的內容編寫在程序內,單獨得進行仿真。此模塊調試成果如圖4-1所示:圖5.2顯示模塊調試圖(2)時間系統模塊調試確定系統顯示成功后,進行時間系統的調試。時間系統需要實現時、分、秒的對的走時。顯示成果為時、分、秒,其中秒鐘可以正常走動。此模塊調試成果如圖4-2所示:圖5.3時間系統模塊調試圖(3)按鍵模塊調試key1按鍵被按下進入校時狀態,key2按鍵被按下進入調鬧鐘狀態(在鬧鈴響時按此鍵能屏蔽鬧鈴音),在兩個不一樣狀態下,key3、key4、key5三個按鍵的功能是相似的,當被按下時,時、分、秒的數值加1。(由于圖片限制校時狀態下和鬧鐘設定類似不予以截圖。)圖5.4時間調整/鬧鐘設定模塊調試圖調試注意事項軟件設計時,需要確定好軟件設計的思緒,即先確定各個功能需要實現的先后,再將各功能模塊單獨進行編寫調試,待各模塊功能完善后,再進行總體聯合調試。調試過程中出現了某些問題,并一一處理:(1)在進行系統聯機調試時,要注意電源與否接通,PC機的接口和關鍵板上的JTAG下載口與否連接對的。確定將未使用的引腳設置為三態輸入,否則也許會損壞芯片。(2)顯示模塊對的調試之后,進行時鐘系統的調試過程中,出現時間信息并沒有顯示在屏幕上,而在對應時間信息的位置上顯示的是“-”。出現此問題時候,首先對硬件進行再次檢查,用示波器檢查引腳兩端與否有信號的輸入輸出。成果發現硬件電路連接對的,問題出目前引腳設置的方面。在設定引腳時,沒有選擇對的的輸出引腳。通過查找書本,修改輸出引腳,處理了這個問題。(3)時鐘模塊時,出現秒鐘走的過快的現象。最終發現是分頻程序中沒有對的的對時鐘脈沖信號進行對的的分頻。通過在網絡資源和書籍的學習對的的改善了這個問題。(4)鍵盤調整時間程序中,出現了無法正常調時狀況,按鍵盤后,時間信息沒有變化或者變化過多。通過檢查,找到原因是沒有給按鍵進行按鍵去抖動。這闡明在編寫程序時候要充足理解各芯片內容資料,減少編寫小錯誤引起對整個程序導致的影響。(5)鬧鐘報時和整點報時蜂鳴時間問題。鬧鐘報時中,假如鬧鐘時間到就會鬧鈴1分鐘,考慮到實際生活中,鬧鐘都是可以手動關閉的,于是設定了一種鬧鐘開關鍵,為了減少系統硬件的繁雜,當系統時間抵達鬧鈴時間和整點報時的時間,蜂鳴器才會響起。
總結和展望總結在FPGA上設計和調試都需要耐心,時鐘設計在生活中無處不在,設計的過程要考慮到應用的習慣,設計更人性化的體驗,才會是一種好的設計。在VerilogHDL語言的學習上還存在某些問題,沒有深入的學習,對于有些語法錯誤,還需要仔細的查找。假如將這個數字時鐘應用于現實生活中,還存在些許的問題。例如按鍵太多,操作起來沒那么的以便等等。展望針對數字時鐘的設計,通過以上的驗證,我們可以懂得,對數字時鐘來說,其實占用很少邏輯資源,也就意味著假如一點制作成SOC的話,成本會非常的低,因此基于這點,整個模塊完全可以依附在其他功能產品(如CPU內部)上,給整個產品增長的優勢。參照文獻劉君,常明,秦娟,基于硬件描述語言(VHDL)的數字時鐘設計,天津理工大學學報,,第23卷第4期,40-41廖日坤,CPLD/FPGA嵌入式應用開發技術白金手冊,中國電力出版社,,212-218。王開軍,姜宇柏,面向CPLD/FPGA的VHDL設計,機械工業出版社,,28-65。趙保經,中國集成電路大全,國防工業出版社,1985。高吉祥,電子技術基礎試驗與課程設計,電子工業出版社,。呂思忠,數子電路試驗與課程設計,哈爾濱工業大學出版社,。謝自美,電子線路設計、試驗、測試,華中理工大學出版社,。趙志杰,集成電路應用識圖措施,機械工業出版社,,35-40。張慶雙,電子元器件的選用與檢測,機械工業出版社,。譚會生,張昌凡,EDA技術及應用,西安電子科技大學出版社,。李可,數字鐘電路及應用[M],北京:電子工業出版社,1996。康華先,電子技術基礎(數字部分)第四版[M].北京:高等教育出版社,.213-224。集成電路手冊分編委會編,中外集成電路簡要速查手冊,TTL、CMOS電路[M],北京:電子工業出版社,1997。康華光,電子技術基礎,高等教育出版社,宋春榮,通用集成電路速查手冊,山東科學技術出版社,1995。閻石,數字電子技術基礎(第四版)[M],北京:高等教育出版社,1998。KawasakiHiroaki,SakuradaHiroshi,NarushimaShinichi,etalDouble-facedvacuumfluorescentdisplay[P].USPatent:5463276,1995致謝在我進行此畢業論文撰寫的過程中,我的導師給了我極大的協助。在這里,我要感謝在這些在我畢業設計過程中指導和協助過我的人。首先,我要感謝我的指導嚴格規定。本論文的選題和撰寫都是在她的指導下完畢的。從開始對verilogHDL語言不懂的狀況下,慢慢學習,通過一段時間的探索,開始學著在試驗板上進行練習操作,才有了長足的進步,最終調試成功;老師對于問題思緒的指導,都將成為此后工作、學習的寶貴精神財富。在我走向社會,走向工作崗位的過程中,老師予以我的教導、協助和殷切期望,促使我愈加積極追求新的人生目的。感謝父母一直默默地予以我關懷和支持,父母的悉心關懷,永遠是鼓勵我積極向上的不竭動力。最終,還要感謝和我同樣即將畢業的同班同學;感謝大學四年的同寢室室友;感謝那些沒有提及姓名,但也同樣予以我協助的老師、同學和朋友!附錄moduleclock(clk,key,dig,seg,beep);//模塊名clockinputclk; //輸入時鐘input[4:0]key; //輸入按鍵output[7:0]dig; //數碼管選擇輸出引腳aoutput[7:0]seg; //數碼管段輸出引腳outputbeep; //蜂鳴器輸出端reg[7:0]seg_r=8'h0; //定義數碼管輸出寄存器reg[7:0]dig_r; //定義數碼管選擇輸出寄存器reg[3:0]disp_dat; //定義顯示數據寄存器reg[8:0]count1; //定義計數寄存器reg[14:0]count; //定義計數中間寄存器reg[23:0]hour=24'h235956; //定義目前時刻寄存器reg[23:0]clktime=24'h000000; //定義設定鬧鐘reg[1:0]keyen=2'b11; //定義標志位reg[4:0]dout1=5'b11111;reg[4:0]dout2=5'b11111;reg[4:0]dout3=5'b11111; //寄存器wire[4:0]key_done; //按鍵消抖輸出reg[15:0]beep_count=16'h0; //蜂鳴器寄存器reg[15:0]beep_count_end=16'hffff;//蜂鳴器截止寄存器regclktime_en=1'b1; //鬧鐘使能寄存器regsec; //1秒時鐘regclk1; //1ms時鐘regbeep_r; //寄存器wirebeepen;assignbeep=beep_r; //輸出音樂assigndig=dig_r; //輸出數碼管選擇assignseg=seg_r; //輸出數碼管譯碼成果assignbeepen=|hour[15:4];assignkey_done=key|dout3;//按鍵消抖輸出//1ms信號產生部分always@(posedgeclk) //定義clock上升沿觸發begin count=count+1'b1; if(count==15'd24000) //0.5mS到了嗎? begin count=15'd0; //計數器清零 clk1=~clk1; //置位秒標志 endend//秒信號產生部分always@(posedgeclk1) //定義clock上升沿觸發begin count1=count1+1'b1; if(count1==9'd500) //0.5S到了嗎? begin count1=9'd0; //計數器清零 sec=~sec; //置位秒標志 endendalways@(posedgecount1[5]) //按鍵去噪聲begindout1<=key;dout2<=dout1;dout3<=dout2;endalways@(negedgekey_done[4])beginkeyen[1]=~keyen[1]; //校準按鍵轉換endalways@(negedgekey_done[3])begin keyen[0]=~keyen[0]; //定期按鍵轉換end//鬧鐘定期部分always@(negedgesec) begin if(!keyen[0]) //假如有鬧鐘設置鍵按下 begin case(key_done[2:0]) 3'b110: begin clktime[19:16]=clktime[19:16]+1'b1; //時個位加一 if(clktime[19:16]==4'ha) begin clktime[19:16]=4'h0; clktime[23:20]=clktime[23:20]+1'b1; //時十位加一 end if(clktime[23:16]==8'h24) clktime[23:16]=8'h0; end 3'b101: begin clktime[11:8]=clktime[11:8]+1'b1; //分個位加一 if(clktime[11:8]==4'ha) begin clktime[11:8]=4'h0; clktime[15:12]=clktime[15:12]+1'b1; //分十位加一 end if(clktime[15:8]==8'h60) clktime[15:8]=8'h0; end 3'b011: begin clktime[3:0]=clktime[3:0]+1'b1; //秒個位加一 if(clktime[3:0]==4'ha) begin clktime[3:0]=4'h0; clktime[7:4]=clktime[15:12]+1'b1; //秒十位加一 end if(clktime[7:0]==8'h60) clktime[7:0]=8'h0; end default: clktime=clktime; endcase endend//數碼管顯示內容always@(posedgeclk)begin case({keyen[0],count1[3:1]}) //選擇掃描顯示數據 4'd0:disp_dat=clktime[3:0]; //秒個位 4'd1:disp_dat=clktime[7:4]; //秒十位 4'd2:disp_dat=4'ha; //顯示"-" 4'd3:disp_dat=clktime[11:8]; //分個位 4'd4:disp_dat=clktime[15:12]; //分十位 4'd5:disp_dat=4'ha; //顯示"-" 4'd6:disp_dat=clktime[19:16]; //時個位 4'd7:disp_dat=clktime[23:20]; //時十位 4'd8:disp_dat=hour[3:0]; //秒個位 4'd9:disp_dat=hour[7:4]; //秒十位 4'd10:disp_dat=4'ha; //顯示"-" 4'd11:disp_dat=hour[11:8]; //分個位 4'd12:disp_dat=hour[15:12]; //分十位 4'd13:disp_dat=4'ha; //顯示"-" 4'd14:disp_dat=hour[19:16]; //時個位 4'd15:disp_dat=hour[23:20]; //時十位 default:disp_dat=4'ha; //顯示"-" endcase //數碼管選擇 case(count1[3:1])//選擇數碼管顯示位 3'd0:dig_r=8'b11111110;//選擇第一種數碼管顯示 3'd1:dig_r=8'b11111101;//選擇第二個數碼管顯示 3'd2:dig_r=8'b11111011;//選擇第三個數碼管顯示 3'd3:dig_r=8'b11110111;//選擇第四個數碼管顯示 3'd4:dig_r=8'b11101111;//選擇第五個數碼管顯示 3'd5:dig_r=8'b11011111;//選擇第六個數碼管顯示 3'd6:dig_r=8'b10111111;//選擇第七個數碼管顯示 3'd7:dig_r=8'b01111111;//選擇第八個數碼管顯示 endcaseend//數碼管顯示always@(posedgeclk)begincase(disp_dat)4'h0:seg_r=8'hc0; //顯示04'h1:seg_r=8'hf9; //顯示14'h2:seg_r=8'ha4; //顯示24'h3:seg_r=8'hb0; //顯示34'h4:seg_r=8'h99; //顯示44'h5:seg_r=8'h92; //顯示54'h6:seg_r=8'h82; //顯示64'h7:seg_r=8'hf8; //顯示74'h8:seg_r=8'h80; //顯示84'h9:seg_r=8'h90; //顯示94'ha:seg_r=8'hbf; //顯示-default:seg_r=8'hff; //不顯示endcaseif((count1[3:1]==3'd2)&sec)seg_r=8'hff;end//時間計算及校準部分always@(negedgesec)//計時處理begin if(!keyen[1])//校準鍵與否有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 印度軍力教學課件
- 乍浦小學口試題目及答案
- 廣告設計師證書考試用戶反饋分析試題及答案
- 助理廣告師活動策劃能力試題及答案
- 愚人節起源和發展-英文版
- 比熊犬智商測試題及答案
- 簡易氣壓計試題及答案
- 甲狀腺考試題目及答案
- 2024年設計師考試專業知識試題及答案
- 廣西高考一模試題及答案
- DL∕ T 855-2004 電力基本建設火電設備維護保管規程
- 因式分解(提取公因式法)練習100題及答案
- 量子力學+周世勛(全套完整)課件
- 長沙理工大學結構設計原理題庫
- CJT152-2016 薄壁不銹鋼卡壓式和溝槽式管件
- 《無機化學》課件-氫鍵
- AQ∕T 7009-2013 機械制造企業安全生產標準化規范
- 丹佛斯變頻器參數說明書
- 綜采隊巡回檢查制度樣本
- 間質性肺病治療方案
- 蘇科版八年級下冊物理期中測試卷
評論
0/150
提交評論