版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> SOPC/EDA綜合課程設(shè)計報告</p><p> 設(shè)計題目: 綜合計時系統(tǒng)</p><p> 設(shè) 計 者: 學(xué) 號: 班 級: </p><p><b> 指導(dǎo)老師: </b></p><p> 完成時間: </p>
2、;<p><b> 目錄</b></p><p><b> 1設(shè)計總說明3</b></p><p> 1.1系統(tǒng)設(shè)計要求3</p><p> 2綜合計時系統(tǒng)設(shè)計與分析4</p><p> 2.1 綜合計時模塊:4</p><p> 2
3、.1.1單時鐘電路構(gòu)想4</p><p> 2.1.2顯示控制電路的設(shè)計7</p><p> 2.1.3調(diào)整控制電路TZKZQ的設(shè)計10</p><p> 2.2 系統(tǒng)單元仿真與分析11</p><p> 2.2.1綜合計時電路的仿真11</p><p> 2.2.2調(diào)整控制電路的仿真12<
4、;/p><p> 2.2.3顯示控制電路的仿真13</p><p> 3外圍電路設(shè)計14</p><p> 3.1 直流穩(wěn)壓電源設(shè)計電路圖14</p><p> 3.2 顯示電路的設(shè)計15</p><p> 4收獲與體會16</p><p> 4.1 改進(jìn)方法16&
5、lt;/p><p> 4.2 體會16</p><p> 5設(shè)計參考資料18</p><p> 6附錄————程序段19</p><p> 6.1 CONT60計時電路的VHDL源程序19</p><p> 6.2 CONT30計時電路的VHDL源程序19</p><p&g
6、t; 6.3 顯示控制電路XSKZQ的VHDL源程序21</p><p> 6.4 調(diào)整控制電路TZKZQ的VHDL源程序23</p><p><b> 設(shè)計總說明</b></p><p> 計時系統(tǒng)對現(xiàn)代人們生活學(xué)習(xí)工作等各方面有著巨大的作用,從以前的時鐘、手表到至今,計時系統(tǒng)已經(jīng)發(fā)展成為普遍性,綜合性,簡便性。如何用更簡單、
7、可靠的原理,更輕便、廉價的設(shè)備,更精確、綜合的計時,來設(shè)計電子計時器,是此設(shè)計的研究目的。</p><p> 隨著現(xiàn)代電子產(chǎn)品正以前所未有的高速度,向著功能多樣化、體積最小化、功耗最低化迅速發(fā)展,如何提高產(chǎn)品性能,縮小產(chǎn)品體積,降低產(chǎn)品功耗,是對現(xiàn)代電子產(chǎn)品的基本要求,而EDA,即電子設(shè)計自動化技術(shù),正是為了適應(yīng)現(xiàn)代電子產(chǎn)品的設(shè)計要求,伴隨著計算機(jī)、集成電路、電子系統(tǒng)設(shè)計的發(fā)展,吸收數(shù)據(jù)庫、圖形學(xué)、圖論與拓?fù)溥?/p>
8、輯、計算數(shù)學(xué)、優(yōu)化理論等多學(xué)科最新成果而逐步形成的一門新技術(shù)。它以大規(guī)模可編程邏輯器件為設(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計算機(jī)、大規(guī)??删幊踢壿嬈陂g的開發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯簡化、邏輯映射、編程下載等工作等。</p><p> 采用EDA技術(shù)進(jìn)行綜合計時系統(tǒng)的設(shè)計,可讓計時系統(tǒng)達(dá)到精確,簡易,可靠,省
9、能。EDA技術(shù)設(shè)計電子產(chǎn)品,已成為當(dāng)今電子研發(fā)行業(yè)的主流,它可提高電子設(shè)計自動化程度,縮短開發(fā)周期,提高產(chǎn)品的競爭力。</p><p> 本設(shè)計選用Altera公司的FLEX10K系列芯片,該芯片采用5V的工作模式,由Altera公司的MAXplus2開發(fā)系統(tǒng)提供軟件支持,以硬件描述語言VHDL為系統(tǒng)邏輯描述的主要表達(dá)方式,設(shè)計了一個綜合計時系統(tǒng)。</p><p><b>
10、系統(tǒng)設(shè)計要求</b></p><p> 設(shè)計一個綜合性的計時系統(tǒng),要求能實現(xiàn)年、月、日、時、分、秒及星期的計數(shù)等綜合計時功能,同時將計時結(jié)果通過15個七段數(shù)碼管顯示,并且可通過兩個設(shè)置鍵,對計時系統(tǒng)的有關(guān)參數(shù)進(jìn)行調(diào)整。具體系統(tǒng)功能面板如圖1所示。</p><p><b> 圖1系統(tǒng)功能面板</b></p><p> 綜合計時系
11、統(tǒng)設(shè)計與分析</p><p> 2.1 綜合計時模塊:</p><p> 計時模塊又可分七個小模塊,有計秒模塊,計分模塊,計時模塊,計日模塊,計月模塊,計年模塊,計星期模塊,用于完成各種計時的功能。其中,計秒電路的輸入時鐘周期為1秒,計分電路的輸入時鐘為計秒電路的輸出進(jìn)位,如此類推下去,構(gòu)成每個計時模塊之間的聯(lián)系。而計日模塊又略有不同,因為每個月的日數(shù)受年份,月份影響,所以要輸入當(dāng)前
12、的年份月份來判斷是否閏年,是否大月,才可以實現(xiàn)準(zhǔn)確的計時。</p><p> 調(diào)整控制電路則用于調(diào)整計時系統(tǒng)的有關(guān)參數(shù),通過兩個按鍵來對系統(tǒng)的參數(shù)進(jìn)行修改,在修改過程中,對應(yīng)的修改計時模塊通過相應(yīng)的燈點亮來表示數(shù)據(jù)正待輸入。</p><p> 顯示控制電路用于完成計時結(jié)果的顯示控制及顯示譯碼等功能然后通過15個七段數(shù)碼管顯示出來。</p><p> 同時,設(shè)計
13、了相應(yīng)的外圍電路,因為家庭用的都是220V的交流電壓,所以可通過整流,濾波,穩(wěn)壓,產(chǎn)生5V和12V電壓的直流穩(wěn)壓電路,5V的電壓供給FLEX10K芯片,而12V電壓供給產(chǎn)生1KHz頻率的方波信號源電路,還有顯示數(shù)碼管驅(qū)動電路,用于15個數(shù)碼管的顯示驅(qū)動,還有8個LED顯示燈,表示當(dāng)前調(diào)整模式的選擇狀況,兩個點動式按鍵用于調(diào)整數(shù)據(jù)時的模式選擇和數(shù)據(jù)修改。</p><p> 關(guān)鍵詞:EDA;FLEX10K系列芯片;
14、VHDL硬件描述語言;計時模塊;顯示塊;</p><p> 調(diào)整模塊;外圍電路。</p><p> 2.1.1單時鐘電路構(gòu)想</p><p> 數(shù)字鐘以其顯示時間的直觀性、走時準(zhǔn)確性而受到了人們的歡迎并很快走進(jìn)了千家萬戶。作為一種計時工具,數(shù)字鐘的基本組成部分離不開計數(shù)器,在控制邏輯電路的控制下完成預(yù)定的各項功能。數(shù)字鐘的基本原理方框圖如下:</p>
15、;<p> 圖2 數(shù)字鐘原理方框圖</p><p><b> 時基T產(chǎn)生電路</b></p><p> 由晶振產(chǎn)生的頻率非常穩(wěn)定的脈沖,經(jīng)整形、穩(wěn)定電路后,產(chǎn)生一個頻率為1Hz的、非常穩(wěn)定的計數(shù)時鐘脈沖。</p><p><b> 控制邏輯電路</b></p><p> 產(chǎn)
16、生調(diào)時、調(diào)分信號及位選信號。調(diào)時、調(diào)分信號的產(chǎn)生:由計數(shù)器的計數(shù)過程可知,正常計數(shù)時,當(dāng)秒計數(shù)器(60進(jìn)制)計數(shù)到59 時,再來一個脈沖,則秒計數(shù)器清零,重新開始新一輪的計數(shù),而進(jìn)位則作為分計數(shù)器的計數(shù)脈沖,使分計數(shù)器計數(shù)加1?,F(xiàn)在我們把電路稍做變動:把秒計數(shù)器的進(jìn)位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數(shù)據(jù)選擇器的兩個數(shù)據(jù)輸入端,而位選信號則接一個脈沖按鍵開關(guān),當(dāng)按鍵開關(guān)不按下去時(即為0),則數(shù)據(jù)選擇器將秒計數(shù)器的進(jìn)位脈
17、沖送到分計數(shù)器,此時,數(shù)字鐘正常工作;當(dāng)按鍵開關(guān)按下去時(即為1),則數(shù)據(jù)選擇器將另外一個2Hz 的信號作為分計數(shù)器的計數(shù)脈沖,使其計數(shù)頻率加快,當(dāng)達(dá)到正確時間時,松開按鍵開關(guān),從而達(dá)到調(diào)時的目的。調(diào)節(jié)小時的時間也一樣的實現(xiàn)。</p><p><b> 計數(shù)顯示電路</b></p><p> 由計數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時鐘的關(guān)鍵部分。計數(shù)部分:由兩個6
18、0進(jìn)制計數(shù)器和一個12/24進(jìn)制計數(shù)器組成,其中60進(jìn)制計數(shù)器可用6進(jìn)制計數(shù)器和10進(jìn)制計數(shù)器構(gòu)成;24進(jìn)制的小時計數(shù)同樣可用6進(jìn)制計數(shù)器和10進(jìn)制計數(shù)器得到:當(dāng)計數(shù)器計數(shù)到24或晚上12時,“2”和“4”(或“1” 和“2”)同時進(jìn)行清零,則可實現(xiàn)24/12進(jìn)制計數(shù)。數(shù)據(jù)選擇器:因為本實驗用到了6個動態(tài)掃描數(shù)碼管,數(shù)據(jù)的選擇輸出是由輸出相應(yīng)的選擇位完成的,故需要提供掃描輸出程序。</p><p> 圖3 自
19、頂向下設(shè)計分割圖</p><p> CNT60計數(shù)模塊是一個多用計時模塊,它既可作為計秒電路調(diào)用,又可作為計分電路、計時電路調(diào)用。圖4是其輸入、輸出端口圖。其中,輸入信號LD為置數(shù)控制信號,低電平有效;輸入信號CLK為計數(shù)時鐘信號;輸入信號DATA為待預(yù)置數(shù);輸出信號NUM為計數(shù)結(jié)果;輸出信號CO為計數(shù)溢出信號。</p><p> 圖4 CNT60計數(shù)模塊輸入、輸出端口圖</p
20、><p> CNT60的主要VHDL程序段如下:</p><p> IF(LD='0') THEN</p><p> NUM<=DATA;</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF NUM="
21、111011" THEN --59</p><p> NUM<="000000";CO<='1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b&
22、gt; END IF;</b></p><p><b> END IF;</b></p><p> 圖5 CNT30計數(shù)模塊的輸入、輸出端口圖</p><p> CNT30的主要VHDL程序段如下:</p><p> IF(LD='0') THEN</p><p
23、> NUM<=DATA;</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> MAX_DAYS<=TOTAL_DAYS;</p><p> IF NUM=TOTAL_DAYS THEN --99</p><p> NUM<="
24、00001";CO<='1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b> END IF;</b></p><p><b> END IF
25、;</b></p><p> 2.1.2顯示控制電路的設(shè)計</p><p> 本設(shè)計顯示需要使用的是15個七段顯示數(shù)碼管。在計時結(jié)果顯示電路中,七段數(shù)碼管顯示部分是一個不容忽視的環(huán)節(jié),如若處理不得當(dāng),可能引起系統(tǒng)功率過大,產(chǎn)生散熱問題,嚴(yán)重時甚至?xí)?dǎo)致系統(tǒng)的燒毀。為了解決好以上問題,下面就對七段數(shù)碼管顯示電路做簡要的分析和介紹</p><p> 通
26、常點亮一個LED所需的電流是5~50 mA,通電的電流愈大,LED的亮度愈高,相對的也會使其壽命縮短。一般以10 mA的導(dǎo)通電流來估算它所必須串聯(lián)的阻值,其計算方式參考圖6所示。</p><p> 圖6 單個LED的串接電阻計算方式</p><p> 七段顯示器可分為共陽極、共陰極型兩種,它們都可以等效成8個LED的連接電路,其中圖7就是共陰極型七段顯示器的等效電路和每節(jié)LED的定義
27、位置圖。</p><p> 圖7 共陰極型七段顯示器</p><p> 根據(jù)以上設(shè)計思想,本系統(tǒng)的數(shù)據(jù)顯示電路可分為兩個子模塊:</p><p> (1) 顯示控制電路XSKZQ:負(fù)責(zé)完成數(shù)據(jù)選擇掃描及數(shù)碼管位選擇信號的產(chǎn)生,數(shù)據(jù)掃描選擇輸出,對于選擇的數(shù)據(jù)進(jìn)行BCD碼轉(zhuǎn)換等功能;</p><p> (2) 顯示譯碼電路:將用于顯示
28、的BCD碼數(shù)據(jù)進(jìn)行譯碼。</p><p> XSKZQ的輸入、輸出端口如圖8所示。其中,輸入信號CLK_SCAN為用于產(chǎn)生數(shù)據(jù)選擇掃描等控制信號的時鐘信號;輸入信號SEC、MIN、HOUR、DAY、MON、YEAR、WEEK分別來自計秒電路、計分電路、計時電路、計日電路、計月電路、計年電路、計星期電路等計時電路的計時結(jié)果輸出端;輸出信號BCD為被選擇進(jìn)行顯示的計秒/計分/計時/計日/計月/計年/計星期電路等計時
29、電路的計時結(jié)果的8位BCD碼,輸出端SELOUT經(jīng)外部的3-8譯碼電路譯碼后用于選擇對應(yīng)計時結(jié)果顯示數(shù)碼管的公共端COM。</p><p> 圖9為15個共陰極型七段數(shù)碼管驅(qū)動接線圖</p><p> 圖9 15個共陰極型七段數(shù)碼管驅(qū)動接線圖</p><p> 2.1.3調(diào)整控制電路TZKZQ的設(shè)計</p><p> 對于系統(tǒng)中的時
30、間調(diào)整電路,擬通過模式和調(diào)整兩個外部按鍵完成。模式按鍵負(fù)責(zé)切換正常時間計數(shù)模式和時間調(diào)整模式,調(diào)整模式切換順序如圖10所示。調(diào)整鍵負(fù)責(zé)在時間調(diào)整模式之下,對當(dāng)前模式的計時結(jié)果進(jìn)行調(diào)整。</p><p> 圖10 調(diào)整模式切換順序</p><p> 對于系統(tǒng)中的時間調(diào)整電路,擬通過模式和調(diào)整兩個外部按鍵完成。模式鍵負(fù)責(zé)切換正常時間計數(shù)模式和時間調(diào)整模式,調(diào)整模式切換順序如圖10所示。調(diào)
31、整鍵負(fù)責(zé)在時間調(diào)整模式之下,對當(dāng)前模式的計時結(jié)果進(jìn)行調(diào)整。TZKZQ模塊是負(fù)責(zé)各個模塊之間的相互切換以及對被選中的模式進(jìn)行時間調(diào)整的。圖11是其輸入、輸出端口圖。</p><p> 圖11 TZKZQ的輸入、輸出端口圖</p><p> 2.2 系統(tǒng)單元仿真與分析</p><p> 各部分模塊完成后,用QUARTUS Ⅱ?qū)Τ绦蜻M(jìn)行編譯仿真,以得到相應(yīng)的仿真
32、波形。</p><p> 2.2.1綜合計時電路的仿真</p><p> CNT60.VHD模塊仿真波形如下:</p><p> 圖12 CNT60.VHD模塊仿真圖</p><p> 從圖12可以看出,CNT60.VHD實現(xiàn)了從0到59的循環(huán)計數(shù),每實現(xiàn)一次59到0的計數(shù)動作,計數(shù)模塊輸出一個進(jìn)位信號。當(dāng)LD端有低電平輸入時,說明
33、置數(shù)信號(LD)有效,模塊將預(yù)置數(shù)(DATA)56送入計數(shù)結(jié)果(NUM)中去,計數(shù)模塊從56開始重新計數(shù)。</p><p> CNT30.VHD的仿真波形如下:</p><p> 圖13 CNT30模塊仿真圖</p><p> 從圖13可以看出,該模塊首先要讀取當(dāng)前年月(NIAN和YUE),再對該月的最大天數(shù)(MAX_DAYS)進(jìn)行判斷并將結(jié)果向外輸出。在正
34、常計數(shù)過程中,模塊實現(xiàn)了從0到最大天數(shù)(MAX_DAYS)的循環(huán)計數(shù),每實現(xiàn)一次最大天數(shù)(MAX_DAYS)到0的計數(shù)動作,計數(shù)模塊輸出一個進(jìn)位信號。當(dāng)LD端有低電平輸入時,說明置數(shù)信號(LD)有效,模塊將預(yù)置數(shù)(DATA)24送入計數(shù)結(jié)果(NUM)中去,計數(shù)模塊從24開始重新計數(shù)。</p><p> 2.2.2調(diào)整控制電路的仿真</p><p> TZKZQ.VHD的仿真波形如下:&
35、lt;/p><p> 圖14 TZKZQ.VHD仿真圖(一)</p><p> 圖15 TZKZQ.VHD仿真圖(二)</p><p> 從圖14可以看出,調(diào)整鍵被按下了8次(鍵盤產(chǎn)生“01”信號即為調(diào)整鍵按下一次),調(diào)整模式依次經(jīng)過了正常、調(diào)秒、調(diào)分、調(diào)時、調(diào)日、調(diào)月、調(diào)年、調(diào)星期再回到正常這8種模式的循環(huán),即MODE依次從0到7,再從7回到0的循環(huán)。在按鍵過
36、程中,每按下一次按鈕,相應(yīng)地被調(diào)整模式的異步并行置位使能置“0”,同時通過一個非門點亮該調(diào)整模式所對應(yīng)的發(fā)光二極管,作為該調(diào)整模式的指示信號。</p><p> 從圖15可以看出,在按動了兩次模式鍵(01)后,調(diào)整模式切換到了調(diào)分模式,然后又按動了兩次調(diào)整鍵(10),實現(xiàn)了在調(diào)分模式下對當(dāng)前分的值進(jìn)行調(diào)整(從34調(diào)到36)。 </p><p> 2.2.3顯示控制電路的仿真</p
37、><p> XSKZQ.VHD的仿真波形如下:</p><p> 圖16 TZKZQ.VHD仿真圖</p><p> 從圖16可以看出,當(dāng)SELOUT分別等于0,1,2,3,4,5,6,7時,分別選擇對應(yīng)的輸入數(shù)據(jù)輸出,達(dá)到了設(shè)計要求。</p><p><b> 外圍電路設(shè)計</b></p><
38、p> 3.1 直流穩(wěn)壓電源設(shè)計電路圖</p><p> 圖17 直流穩(wěn)壓電源電路</p><p> 設(shè)輸出電壓為 U=+5V—15V ,輸出電流為I=800mA,則集成穩(wěn)壓器可選用CW317,其輸出電壓范圍為:U0=1.2—37V,最大輸出電流Imax為1.5A。</p><p> 在圖中,R1和R3組成輸出電壓調(diào)節(jié),輸出電壓U0≈1.25(1+
39、 R3/ R1),取R1=200Ω,可得R3≈2.2KΩ。所以R3可選2.5KΩ的精密線繞電位器。</p><p> 由于CW317的輸入電壓與輸出電壓差的最小值為3V,,輸入電壓與輸出電壓差的最大值為40V,故CW317的輸入電壓范圍為:12V到43V,所以變壓器可選擇輸入功率為20W的型號。整流二極管選用IN4001,其反向擊穿電壓為大于50V,額定工作電流為1A。濾波電容C取容量為4700uF,耐壓為25
40、V電容。其它的,C1=0.01uF, C2=10 uF, C0=1 uF。由于本系統(tǒng)需要用到12V的電壓和5V的電壓,調(diào)節(jié)R1,使輸出U1為12V,作為信號源的輸入電壓。再選用滑動變阻器Rw2=100Ω為分壓器,調(diào)節(jié)出U2為5V作為FLEX10K的輸入電壓。</p><p> 3.2 顯示電路的設(shè)計 </p><p> 圖18 顯示電路圖</p><p>
41、; 簡潔的板面實現(xiàn)了年,月,日,時,分,秒,星期的綜合計時,并通過兩個按鍵實現(xiàn)了數(shù)據(jù)的修改。內(nèi)部有直流電壓源,只需接上家庭用220V交流電壓,就可實現(xiàn)計時。而且系統(tǒng)運行只需5V電壓,可做到節(jié)能。</p><p><b> 收獲與體會</b></p><p><b> 4.1 改進(jìn)方法</b></p><p> 在
42、顯示控制電路XSKZQ的設(shè)計中,利用動態(tài)掃描顯示的原理,既簡化了顯示譯碼驅(qū)動電路的設(shè)計,又節(jié)約了硬件的I/O口,同時還減小了系統(tǒng)的驅(qū)動電流及功耗等,在實際使用中非常有價值。</p><p> 在調(diào)整控制電路TZKZQ的設(shè)計中,通過讀入系統(tǒng)當(dāng)前工作的各種時間信息進(jìn)行自加調(diào)整,簡化了預(yù)置值的設(shè)計,利用狀態(tài)機(jī)非常簡潔地實現(xiàn)了8種調(diào)整的循環(huán)變化。 </p><p> 由于本系統(tǒng)采用的是利用秒計
43、時器的進(jìn)位來作為分計時器的脈沖信號,利用分計時器的進(jìn)位來作為時計時器的脈沖信號,以此類推,這樣的設(shè)計雖然減少了器件的使用,卻會導(dǎo)致誤差呈幾何倍數(shù)的增加??梢钥紤]對于系統(tǒng)的各種控制時鐘信號,通過分頻電路對一個給定的合適頻率信號進(jìn)行分頻來產(chǎn)生,這樣就能適當(dāng)?shù)臏p少誤差的產(chǎn)生,使該產(chǎn)品計時更加精確。</p><p><b> 4.2 體會</b></p><p> 開始
44、做這個課題時,發(fā)現(xiàn)不是和想象中那樣簡單,由于以前嘗試的都是小型系統(tǒng),從沒有嘗試過制作個單獨的系統(tǒng),而且EDA的編程思想還是與C、匯編的編程方式存在很多的不同,從一開始我就用著錯誤的思想去做這個事,結(jié)果是顯當(dāng)然,毫無結(jié)果。</p><p> 終于真正的開始重視本次課程設(shè)計,參考過王老師的課程設(shè)計指導(dǎo)書后,我采用自上至下的編程思想,將本個系統(tǒng)大概分了幾塊,開始嘗試查找資料,與組里同學(xué)討論,在了解了別人的編程思想后,
45、我們發(fā)現(xiàn)資料不是絕對的、完整的,我們開始在各個資料之間挑出精華,再加上自己的知識來完善該個課程設(shè)計。</p><p> 經(jīng)過幾天的調(diào)試,經(jīng)過仿真終于能達(dá)到們所需的設(shè)計要求,雖然最終的設(shè)計還存在些小瑕疵.但畢竟是第一次做,我還是比較滿意的。</p><p> 本次設(shè)計讓我們那發(fā)現(xiàn)了自己很多的不足,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。</p><p>
46、 這次設(shè)計的綜合計時系統(tǒng)還是比較成功的,雖然這次設(shè)計的綜合計時系統(tǒng)不是很完美,在設(shè)計中遇到了很多的難題,最后在老師的辛勤的指導(dǎo)下,終于迎刃而解.還是覺得不錯的,終于覺得平時所學(xué)的知識有了實用的價值,達(dá)到了理論與實際相結(jié)合的目的,不僅學(xué)到了不少知識,而其鍛煉了自己的能力,使自己對以后的路有了更加清楚的認(rèn)識,同時,對未來有了更多的信心。最后,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示衷心的感謝!</p><p>
47、 此設(shè)計反映出EDA技術(shù)在電子產(chǎn)品的設(shè)計的優(yōu)勢和實用性。EDA技術(shù)將更廣泛應(yīng)用于高校電類專業(yè)的實踐教學(xué)當(dāng)中,將更廣泛應(yīng)用于科研工作和新產(chǎn)品的開發(fā)中,將更廣泛應(yīng)用于專用集成電路的開發(fā),將更廣泛應(yīng)用于傳統(tǒng)機(jī)電設(shè)備的升級換代和技術(shù)改。</p><p><b> 設(shè)計參考資料</b></p><p> [1] SOPC/EDA綜合課程設(shè)計指導(dǎo)書,自編</p>
48、<p> [2] 譚會生,張昌凡.EDA技術(shù)及應(yīng)用(第二版). 西安:西安電子科技大學(xué)出版社,2001</p><p> [3] 第二屆全國大學(xué)生電子設(shè)計競賽組委會. 全國大學(xué)生電子設(shè)計競賽獲獎作品選編(1994-1995). 北京:北京理工大學(xué)出版社,1997</p><p> [4] 徐光軍,徐光輝.CPLD/FPGA 的開發(fā)與應(yīng)用. 北京:電子工業(yè)出版社,2002
49、</p><p> [5] 李國麗,朱維勇. EDA與數(shù)字系統(tǒng)設(shè)計. 北京:機(jī)械工業(yè)出版社,2004</p><p> [6] 第三屆全國大學(xué)生電子設(shè)計競賽組委會. 全國大學(xué)生電子設(shè)計競賽獲獎作品選編(1997). 北京:北京理工大學(xué)出版社,1999</p><p> [7] 潘松,黃繼業(yè). EDA技術(shù)實用教程. 北京:科學(xué)出版社,2002</p>
50、<p> [8] www.altera.com.cn</p><p> [9] www.fpga.com.cn</p><p> [10] www.pld.com.cn</p><p><b> 附錄————程序段</b></p><p> 綜合計時電路的VHDL源程序</p>&l
51、t;p> 6.1 CONT60計時電路的VHDL源程序</p><p><b> CNT60.VHD</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED
52、.ALL;</p><p> ENTITY CNT60 IS</p><p><b> PORT(</b></p><p> CLK: IN STD_LOGIC;--時鐘脈沖</p><p> NUM: BUFFER STD_LOGIC_VECTOR(5 DOWNTO 0); --計數(shù)結(jié)果</p>
53、<p> CO: OUT STD_LOGIC); --進(jìn)位信號</p><p> END ENTITY CNT60;</p><p> ARCHITECTURE ART OF CNT60 IS</p><p><b> BEGIN</b></p><p> PROCESS(CLK)</p&g
54、t;<p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF NUM="111011" THEN --59</p><p> NUM<="000000";CO<=
55、39;1';</p><p><b> ELSE</b></p><p> NUM<=NUM+1;CO<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p>
56、<p> END PROCESS;</p><p> END ARCHITECTURE ART;</p><p> 6.2 CONT30計時電路的VHDL源程序</p><p><b> CNT30.VHD</b></p><p> LIBRARY IEEE;--CONT30計時電路的VHDL源
57、程序</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CNT30 IS</p><p><b> PORT(</b></p><p> CLK:
58、IN STD_LOGIC; --時鐘脈沖</p><p> NIAN:IN STD_LOGIC_VECTOR(6 DOWNTO 0); --當(dāng)前年</p><p> YUE:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --當(dāng)前月</p><p> NUM:BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0);
59、 --計數(shù)結(jié)果</p><p> MAX_DAYS:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); --本月總天數(shù)</p><p> CO:OUT STD_LOGIC);--進(jìn)位信號</p><p> END CNT30;</p><p> ARCHITECTURE ART OF CNT30 IS</p&g
60、t;<p> SIGNAL TOTAL_DAYS:STD_LOGIC_VECTOR(4 DOWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(CLK) IS</p><p> VARIABLE IS_RUNNIAN:STD_LOGIC;</p><p>
61、;<b> BEGIN</b></p><p> CASE NIAN IS</p><p> WHEN "0000000" => IS_RUNNIAN:='1'; --0如當(dāng)前年為00,</p><p><b> 則輸出閏年確認(rèn)信號</b&
62、gt;</p><p> WHEN "0000100" => IS_RUNNIAN:='1';--4</p><p> WHEN "0001000" => IS_RUNNIAN:='1';--8</p><p> WHEN "0001100" =&g
63、t; IS_RUNNIAN:='1';--12</p><p> WHEN "0010000" => IS_RUNNIAN:='1';--16</p><p> WHEN "0010100" => IS_RUNNIAN:='1';--20</p><p&g
64、t; WHEN "0011000" => IS_RUNNIAN:='1';--24</p><p> WHEN "0011100" => IS_RUNNIAN:='1';--28</p><p> WHEN "0100000" => IS_RUNNIAN:='
65、1';--32</p><p> WHEN "0100100" => IS_RUNNIAN:='1';--36</p><p> WHEN "0101000" => IS_RUNNIAN:='1';--40</p><p> WHEN "01011
66、00" => IS_RUNNIAN:='1';--44</p><p> WHEN "0110000" => IS_RUNNIAN:='1';--48</p><p> WHEN "0110100" => IS_RUNNIAN:='1';--52</p&
67、gt;<p> WHEN "0111000" => IS_RUNNIAN:='1';--56</p><p> WHEN "0111100" => IS_RUNNIAN:='1';--60</p><p> WHEN "1000000" => IS_RU
68、NNIAN:='1';--64</p><p> WHEN "1000100" => IS_RUNNIAN:='1';--68</p><p> WHEN "1001000" => IS_RUNNIAN:='1';--72</p><p> WHEN
69、 "1001100" => IS_RUNNIAN:='1';--76</p><p> WHEN "1010000" => IS_RUNNIAN:='1';--80</p><p> WHEN "1010100" => IS_RUNNIAN:='1';
70、--84</p><p> WHEN "1011000" => IS_RUNNIAN:='1';--88</p><p> WHEN "1011100" => IS_RUNNIAN:='1';--92</p><p> WHEN "1100000"
71、 => IS_RUNNIAN:='1';--96</p><p> WHEN OTHERS => IS_RUNNIAN:='0';</p><p><b> END CASE;</b></p><p> CASE YUE IS</p><p> WHEN &q
72、uot;0001" => TOTAL_DAYS<="11111"; --1 </p><p> WHEN "0011" => TOTAL_DAYS<="11111";--3</p><p> WHEN "0101" => TOTAL_DAYS<
73、;="11111";--5</p><p> WHEN "0111" => TOTAL_DAYS<="11111";--7</p><p> WHEN "1000" => TOTAL_DAYS<="11111";--8</p><
74、;p> WHEN "1010" => TOTAL_DAYS<="11111";--10</p><p> WHEN "1100" => TOTAL_DAYS<="11111";--12</p><p> WHEN "0100" => T
75、OTAL_DAYS<="11110";--4</p><p> WHEN "0110" => TOTAL_DAYS<="11110";--6</p><p> WHEN "1001" => TOTAL_DAYS<="11110";--9<
76、;/p><p> WHEN "1011" => TOTAL_DAYS<="11110";--11</p><p> WHEN "0010" => --2</p><p> IF (IS_RUNNIAN='1') THEN
77、</p><p> TOTAL_DAYS<="11101"; --如是閏年2月則總天數(shù)為29</p><p><b> ELSE</b></p><p> TOTAL_DAYS<="11100";--否則,2月總天數(shù)為28</p><p><b>
78、 END IF;</b></p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> MAX_DAYS<=TOTAL_D
79、AYS;</p><p> IF NUM=TOTAL_DAYS THEN</p><p> NUM<="00001";CO<='1';</p><p> ELSE NUM<=NUM+1;CO<='0';</p><p> END IF; END IF;&l
80、t;/p><p> END PROCESS;</p><p><b> END ART;</b></p><p> 6.3 顯示控制電路XSKZQ的VHDL源程序</p><p><b> XSKZQ.VHD</b></p><p> LIBRARY IEEE;--顯
81、示控制電路XSKZQ的VHDL源程序</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY XSKZQ IS</p
82、><p> PORT(CLK_SCAN:IN STD_LOGIC; --掃描時鐘</p><p> SEC,MIN:IN STD_LOGIC_VECTOR(5 DOWNTO 0); --當(dāng)前秒、分</p><p> HOUR:IN STD_LOGIC_VECTOR(4 DOWNTO 0); --當(dāng)前時</p><p> DAY:
83、IN STD_LOGIC_VECTOR(4 DOWNTO 0); --當(dāng)前日</p><p> MON:IN STD_LOGIC_VECTOR(3 DOWNTO 0); --當(dāng)前月</p><p> YEAR:IN STD_LOGIC_VECTOR(6 DOWNTO 0); --當(dāng)前年</p><p> WEEK:IN STD_LOGIC_VECT
84、OR(2 DOWNTO 0); --當(dāng)前星期</p><p> SEL:IN STD_LOGIC;--輸出時、分、秒或年、月、日選擇</p><p> SELOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); --掃描信號</p><p> HOUR_YEAR:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);&l
85、t;/p><p> MIN_MON:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SEC_DAY:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --2位LED BCD顯示碼輸出</p><p> END ENTITY XSKZQ;</p><p> ARCHITECTURE
86、ART OF XSKZQ IS</p><p> SIGNAL TEMP:INTEGER RANGE 0 TO 99;</p><p> SIGNAL BCD:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> SIGNAL SELOUT:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p&g
87、t; SIGNAL outreg:STD_LOGIC_VECTOR(23 DOWNTO 0);</p><p> SIGNAL CLK_SCAN1: STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(CLK_SCAN)</p><p> VARIABLE CN
88、T:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p><b> BEGIN</b></p><p> IF CLK_SCAN'EVENT AND CLK_SCAN='1' THEN--對各個輸出信號進(jìn)行掃描</p><p> CNT:=CNT+'1';</p>
89、<p><b> END IF;</b></p><p> SELOUT<=CNT;</p><p> CASE CNT IS</p><p> WHEN "000" => TEMP<=CONV_INTEGER(SEC);</p><p> WHEN &quo
90、t;001" => TEMP<=CONV_INTEGER(MIN);</p><p> WHEN "010" => TEMP<=CONV_INTEGER(HOUR);</p><p> WHEN "011" => TEMP<=CONV_INTEGER(DAY);</p><p
91、> WHEN "100" => TEMP<=CONV_INTEGER(MON);</p><p> WHEN "101" => TEMP<=CONV_INTEGER(YEAR);</p><p> WHEN "110" => TEMP<=2;</p><p&
92、gt; WHEN "111" => TEMP<=CONV_INTEGER(WEEK);</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> PROCES
93、S(SELOUT,SEL,CLK_SCAN)—輸出選擇</p><p><b> BEGIN</b></p><p> CASE TEMP IS --2進(jìn)制碼到2位BCD碼轉(zhuǎn)換</p><p> WHEN 0 =>BCD<="00000000" ;</p><p> WHEN
94、1 =>BCD<="00000001" ;</p><p> WHEN 2 =>BCD<="00000010" ;</p><p> WHEN 3 =>BCD<="00000011" ;</p><p> WHEN 4 =>BCD<="
95、00000100" ;</p><p> WHEN 5 =>BCD<="00000101" ;</p><p> WHEN 6 =>BCD<="00000110" ;</p><p> WHEN 7 =>BCD<="00000111" ;</p
96、><p> WHEN 8 =>BCD<="00001000" ;</p><p> WHEN 9 =>BCD<="00001001" ;</p><p> WHEN 10 =>BCD<="00010000" ;</p><p> WHEN
97、11 =>BCD<="00010001" ;</p><p> WHEN 12 =>BCD<="00010010" ;</p><p> WHEN 13 =>BCD<="00010011" ;</p><p> WHEN 14 =>BCD<="
98、00010100" ;</p><p> WHEN 15 =>BCD<="00010101" ;</p><p> WHEN 16 =>BCD<="00010110" ;</p><p> WHEN 17 =>BCD<="00010111" ;</p
99、><p> WHEN 18 =>BCD<="00011000" ;</p><p> WHEN 19 =>BCD<="00011001" ;</p><p> WHEN 20 =>BCD<="00100000" ;</p><p> WHEN
100、21 =>BCD<="00100001" ;</p><p> WHEN 22 =>BCD<="00100010" ;</p><p> WHEN 23 =>BCD<="00100011" ;</p><p> WHEN 24 =>BCD<="
101、00100100" ;</p><p> WHEN 25 =>BCD<="00100101" ;</p><p> WHEN 26 =>BCD<="00100110" ;</p><p> WHEN 27 =>BCD<="00100111" ;</p
102、><p> WHEN 28 =>BCD<="00101000" ;</p><p> WHEN 29 =>BCD<= "00101001";</p><p> WHEN 30 =>BCD<="00110000" ;</p><p> WHEN
103、31 =>BCD<="00110001" ;</p><p> WHEN 32 =>BCD<="00110010" ;</p><p> WHEN 33 =>BCD<="00110011" ;</p><p> WHEN 34 =>BCD<="
104、00110100" ;</p><p> WHEN 35 =>BCD<="00110101" ;</p><p> WHEN 36 =>BCD<="00110110" ;</p><p> WHEN 37 =>BCD<="00110111" ;</p
105、><p> WHEN 38 =>BCD<="00111000" ;</p><p> WHEN 39 =>BCD<="00111001" ;</p><p> WHEN 40 =>BCD<="01000000" ;</p><p> WHEN
106、41 =>BCD<="01000001" ;</p><p> WHEN 42 =>BCD<="01000010" ;</p><p> WHEN 43 =>BCD<="01000011" ;</p><p> WHEN 44 =>BCD<="
107、01000100" ;</p><p> WHEN 45 =>BCD<="01000101" ;</p><p> WHEN 46 =>BCD<="01000110" ;</p><p> WHEN 47 =>BCD<="01000111" ;</p
108、><p> WHEN 48 =>BCD<="01001000" ;</p><p> WHEN 49 =>BCD<="01001001" ;</p><p> WHEN 50 =>BCD<="01010000" ;</p><p> WHEN
109、51 =>BCD<="01010001" ;</p><p> WHEN 52 =>BCD<="01010010" ;</p><p> WHEN 53 =>BCD<="01010011" ;</p><p> WHEN 54 =>BCD<="
110、01010100" ;</p><p> WHEN 55 =>BCD<="01010101" ;</p><p> WHEN 56 =>BCD<="01010110" ;</p><p> WHEN 57 =>BCD<="01010111" ;</p
111、><p> WHEN 58 =>BCD<="01011000" ;</p><p> WHEN 59 =>BCD<="01011001" ;</p><p> WHEN 60 =>BCD<="01100000" ;</p><p> WHEN
112、61 =>BCD<="01100001" ;</p><p> WHEN 62 =>BCD<="01100010" ;</p><p> WHEN 63 =>BCD<="01100011" ;</p><p> WHEN 64 =>BCD<="
113、01100100" ;</p><p> WHEN 65 =>BCD<="01100101" ;</p><p> WHEN 66 =>BCD<="01100110" ;</p><p> WHEN 67 =>BCD<="01100111" ;</p
114、><p> WHEN 68 =>BCD<="01101000" ;</p><p> WHEN 69 =>BCD<="01101001" ;</p><p> WHEN 70 =>BCD<="01110000" ;</p><p> WHEN
115、71 =>BCD<="01110001" ;</p><p> WHEN 72 =>BCD<="01110010" ;</p><p> WHEN 73 =>BCD<="01110011" ;</p><p> WHEN 74 =>BCD<="
116、01110100" ;</p><p> WHEN 75 =>BCD<="01110101" ;</p><p> WHEN 76 =>BCD<="01110110" ;</p><p> WHEN 77 =>BCD<="01110111" ;</p
117、><p> WHEN 78 =>BCD<="01111000" ;</p><p> WHEN 79 =>BCD<="01111001" ;</p><p> WHEN 80 =>BCD<="10000000" ;</p><p> WHEN
118、81 =>BCD<="10000001" ;</p><p> WHEN 82 =>BCD<="10000010" ;</p><p> WHEN 83 =>BCD<="10000011" ;</p><p> WHEN 84 =>BCD<="
119、10000100" ;</p><p> WHEN 85 =>BCD<="10000101" ;</p><p> WHEN 86 =>BCD<="10000110" ;</p><p> WHEN 87 =>BCD<="10000111" ;</p
120、><p> WHEN 88 =>BCD<="10001000" ;</p><p> WHEN 89 =>BCD<="10001001" ;</p><p> WHEN 90 =>BCD<="10010000" ;</p><p> WHEN
121、91 =>BCD<="10010001" ;</p><p> WHEN 92 =>BCD<="10010010" ;</p><p> WHEN 93 =>BCD<="10010011" ;</p><p> WHEN 94 =>BCD<="
122、10010100" ;</p><p> WHEN 95 =>BCD<="10010101" ;</p><p> WHEN 96 =>BCD<="10010110" ;</p><p> WHEN 97 =>BCD<="10010111" ;</p
123、><p> WHEN 98 =>BCD<="10011000" ;</p><p> WHEN 99 =>BCD<="10011001" ;</p><p> WHEN OTHERS=>BCD<=NULL;</p><p><b> END CASE;&
124、lt;/b></p><p> END PROCESS;</p><p> PROCESS(SELOUT,SEL,CLK_SCAN)—輸出選擇</p><p><b> BEGIN</b></p><p> IF CLK_SCAN'EVENT AND CLK_SCAN='0' THE
125、N</p><p> IF SEL='0' THEN</p><p> CASE SELOUT IS</p><p> WHEN "000" => outreg(7 DOWNTO 0)<=BCD;</p><p> WHEN "001" => outreg(
126、15 DOWNTO 8)<=BCD;</p><p> WHEN "010" => outreg(23 DOWNTO 16)<=BCD;</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><
127、;b> ELSE</b></p><p> CASE SELOUT IS</p><p> WHEN "011" => outreg(7 DOWNTO 0)<=BCD;</p><p> WHEN "100" => outreg(15 DOWNTO 8)<=BCD;<
128、/p><p> WHEN "101" => outreg(23 DOWNTO 16)<=BCD;</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p><b> END IF;</b>
129、</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> SEC_DAY<=outreg(7 DOWNTO 0);</p><p> MIN_MON<=outreg(15 DOWNTO 8);</p><p> HOUR
130、_YEAR<=outreg(23 DOWNTO 16);</p><p> END ARCHITECTURE ART;</p><p> 6.4 調(diào)整控制電路TZKZQ的VHDL源程序</p><p><b> TZKZQ.VHD</b></p><p> LIBRARY IEEE;--調(diào)整控制電路TZK
131、ZQ的VHDL源程序</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY TZKZQ IS</p><p> PORT(CLK1HZ:IN STD_LOGIC;</p><p&
132、gt; SET:IN STD_LOGIC; --校表/走時</p><p> SETEN:IN STD_LOGIC;</p><p> SEL:IN STD_LOGIC;--校表選擇</p><p> SEC_CO,MIN_CO,HOUR_CO,DAY_CO,MON_CO:IN STD_LOGIC;</p><p> ENOUT
133、:OUT STD_LOGIC;--校表使能輸出</p><p> SEL_DSP:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEC_CLK,MIN_CLK,HOUR_CLK,DAY_CLK,MON_CLK,YEAR_CLK,WEEK_CLK:OUT STD_LOGIC); --異步并行置位使能</p><p> END ENTITY TZKZQ;<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- sopceda綜合課程設(shè)計報告---智力搶答器
- sopceda綜合課程設(shè)計---出租車計費系統(tǒng)設(shè)計
- 利用cpldfpga設(shè)計綜合計時系統(tǒng) 開題報告
- sopceda綜合課程設(shè)計--車載dvd位控系統(tǒng)的設(shè)計
- sopceda綜合課程設(shè)計---1616的點陣顯示設(shè)計
- 綜合計時批文
- 音樂倒計時綜合課程設(shè)計實驗報告
- 綜合課程設(shè)計--籃球計時計分器
- sopceda綜合課程設(shè)計--等精度數(shù)字頻率計的設(shè)計
- 《gis綜合課程設(shè)計》報告
- 通信系統(tǒng)綜合課程設(shè)計
- 綜合布線系統(tǒng)課程設(shè)計
- 機(jī)電系統(tǒng)綜合課程設(shè)計
- 計時秒表課程設(shè)計---計時秒表系統(tǒng)的設(shè)計
- 小區(qū)綜合布線系統(tǒng)綜合布線課程設(shè)計
- 軟件綜合課程設(shè)計報告模板
- 綜合計時工作制的書面申請
- 綜合布線系統(tǒng)課程設(shè)計--行政樓綜合布線系統(tǒng)設(shè)計
- 課程設(shè)計---籃球競賽計時系統(tǒng)
- 課程設(shè)計學(xué)生綜合測評系統(tǒng)
評論
0/150
提交評論