Sopc課程設計(論文)-數字鐘
《Sopc課程設計(論文)-數字鐘》由會員分享,可在線閱讀,更多相關《Sopc課程設計(論文)-數字鐘(26頁珍藏版)》請在裝配圖網上搜索。
Sopc 課程設計(論文)用紙1摘 要時鐘, 自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,人們對它的功能又提出了新的要求,怎樣讓時鐘更好的為人民服務,怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設計出新型時鐘。本人設計的產品為 24 小時制的多功能數字鐘,具有時鐘時間設置、鬧鐘時間設置、鬧鐘開、鬧鐘關等功能,數字顯示小時、分鐘、秒,鬧鐘就緒燈,蜂鳴器。本論文針對上述情況,在設計中采用 EDA 自動化設計技術。以計算機為基本平臺,以硬件描述語言為系統(tǒng)邏輯描述表達方式,以 EDA 工具作為開發(fā)環(huán)境,以大規(guī)模可編程邏輯器件為設計載體,以專用集成電路 ASIC 為目標器件,以電子系統(tǒng)設計為應用方向的電子產品自動化設計過程。這樣的設計方法,大大的縮短了設計的周期,降低了設計成本。設計出來的數字鐘具有功能多、體積小、功耗低的特點。在論文中主要涉及的內容有:1、介紹 Verilog HDL 語言。2、介紹在 QuartusII 軟件上對數字鐘的設計。3、介紹系統(tǒng)仿真結果和硬件驗證與分析。4、對整個設計系統(tǒng)進行總結。關鍵詞: 電子設計自動化 Verilog HDL 可編程邏輯器件Sopc 課程設計(論文)用紙2目 錄摘 要 I第 1 章 緒 論 3第 2 章 Verilog HDL 語言 .52.1 Verilog HDL 語言簡介 52.2 Verilog HDL 主要特點 52.3 Verilog HDL 語言開發(fā)軟件---Quartus Ⅱ 6第 3 章 數字鐘 Verilog HDL 的設計 .73.1 設計方案及工作原理 .73.1.1 數字鐘設計原理 .73.1.2 數字鐘功能 73.2 數字鐘鐘控定時器的基本組成 83.2.1 D 觸發(fā)器的設計 .83.2.2 數據選擇器的設計 .93.2.3 計數器的設計 103.2.4 數據分配器 123.2.5 譯碼器 .133.2.6 分頻器 .153.2.7 鬧時器 .163.2.8 報時器 173.3 數字鐘原理圖 19第 4 章 軟件調試 .20結論 21參考文獻 22附錄 23Sopc 課程設計(論文)用紙3第 1章 緒 論中國是世界上最早發(fā)明計時儀器的國家。有史料記載,漢武帝太初年間(紀元前104-101年)由落下閎創(chuàng)造了我國最早的表示天體運行的儀器——渾天儀。東漢時期(公元130年)張衡創(chuàng)造了水運渾天儀,為世界上最早的以水為動力的觀測天象的機械計時器,是世界機械天文鐘的先驅。盛唐時代,公元725年張遂(又稱一行)和梁令瓚等人創(chuàng)制了水運渾天銅儀,它不但能演示天球和日、月的運動,而且立了兩個木人,按時擊鼓,按時打鐘。第一個機械鐘的靈魂——擒縱器用于計時器,這是中國科學家對人類計時科學的偉大貢獻。它比十四世紀歐洲出現的機械鐘先行了六個世紀。第一只石英鐘出現在二十世紀二十年代,從三十年代開始得到了推廣,從六十年代開始,由于應用半導體技術,成功地解決了制造日用石英鐘問題,石英電子技術在計時領域得到了廣泛的應用。并取代機械鐘做了更精確的時間標準。早在1880年,法國人皮埃爾·居里和保羅·雅克·居里就發(fā)現了石英晶體有壓電的特性,這是制造鐘表“心臟”的良好材料??茖W家以石英晶體制成的振蕩計時器和電子鐘組合制成了石英鐘。經過測試,一只高精度的石英鐘表,每年的誤差僅為3-5秒。1942年,著名的英國格林尼治天文臺也開始采用了石英鐘作為計時工具。在許多場合,它還經常被列為頻率的基本標準,用于日常測量與檢測。大約在 1970 年前后,石英鐘表開始進入市場,風靡全球。隨著科學的進步,精密的電子元件不斷涌現,石英鐘表也開始變得小巧精致,它既是實用品,也是裝飾品。它為人們的生活提供方便,更為人們的生活增添了新的色彩。 在現行情況下根據簡單實用強的、走時準確進行設計。而實驗證明,鐘表的振蕩部分采用石英晶體作為時基信號源時,走時更精確、調整更方便。鐘是一種計時的器具,它的出現開拓了時間計量的新里程。提起時鐘大家都很熟悉,它是給我們指明時間的一種計時器,并且我們每天都要用到它。二十世紀八十年代中國的鐘表業(yè)經歷了一場翻天覆地的大轉折。其表現在三個方面:(1)從生產機械表轉為石英電子表; (2)曾占據中國消費市場四十多年的大型國有企業(yè)突然被剛剛冒起的“組業(yè)”所取代,鐘表生產中心轉向中國南方沿海一帶;這場轉折以迅雷不及掩耳的速度,沖擊著傳統(tǒng)的中國鐘表工業(yè)。中國的鐘表業(yè)從技術簡單、零件少的石英鐘機芯制造入手。最初石英鐘機芯全靠從日本、德國進口,1989年開始完全自己生產,包括模具的制造加工。近十余年,逐漸提高機芯質量的穩(wěn)定性,同時轉向對手表機芯研制與開發(fā)。目前石英鐘表機芯生產主要在福建省福州、廣東東莞、番禺;機械鐘表機芯在上海、山東等地。Sopc 課程設計(論文)用紙4現在我國的電子業(yè)發(fā)展非??焖?,電子業(yè)的發(fā)展有利于鐘表業(yè)的發(fā)展。在中國鐘表發(fā)展史上,國產機芯研制的失敗已經成為過去,“組裝業(yè)”作為新興鐘表工業(yè)的起步階段也已成為過去。一支新的充滿智慧的鐘表精英在成長。我們相信在科技高速發(fā)展的今天,鐘表業(yè)運用當今材料工業(yè)、電子工業(yè)和其他領域的最新技術,一定會生產出代表中國科學水平的產品。我們希望鐘表業(yè)的精英們在提高制造技術水平中不斷創(chuàng)新,培育出擁有自主知識產權的品牌。這正是中國鐘表業(yè)發(fā)展的希望。數字鐘被廣泛用于個人家庭,車站, 碼頭、辦公室等公共場所,成為人們日常生活中的必需品。由于數字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數字鐘的精度,運用超過老式鐘表, 鐘表的數字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、通斷動力設備、甚至各種定時電氣的自動啟用等,所有這些,都是以鐘表數字化為基礎的。因此,研究數字鐘及擴大其應用,有著非?,F實的意義。Sopc 課程設計(論文)用紙5第 2章 Verilog HDL 語言2.1 Verilog HDL 語言簡介Verilog VHDL(簡稱Verilog)是一種應用廣泛的硬件描述語言,是以文本形式來描述數字系統(tǒng)硬件的結構和行為的語言,可用于從算法級、門級到開關級的多種抽象層次的數字系統(tǒng)設計。它可以表示邏輯電路圖、邏輯表達式,還可以表示數字邏輯系統(tǒng)所完成的邏輯功能。Verilog HDL的產生和應用可追溯到20世界80年代,1984年GDA(Gateway Design Automation)公司陸續(xù)開發(fā)了Verilog HDL及其仿真器,1989年Cadence收購了該公司,1990年Cadence公開發(fā)表了Verilog HDL,1995年成為IEEE標準,即IEEE Std.1364-1995或 Verilog HDL 1364-1995。2.2 Verilog HDL 主要特點1) 既能進行面向綜合的電路設計,又可用于電路的模擬仿真。2) 能夠在多個層次上對所設計的系統(tǒng)加以描述,從開關級、門級、寄存器傳輸級(RTL)到行為級等,都可以勝任;設計的規(guī)模是任意的,語言不對設計的規(guī)模施加任何限制。3) 靈活多樣的描述風格,可進行行為描述,也可時行結構描述或數據流描述;支持混合建模,在一個設計中各個模塊可以在不同的設計層次上建模和描述。4) Verilog HDL 的行為描述語句,如條件語句、賦值語句和循環(huán)語句等,類似于軟件高級語言,便于學習和使用。5) 內置各種基本邏輯門,如 and、or 和 nand 等,可方便地進行門級結構描述;內置各種開關級元件,如 pmos、nmos 和 cmos 等,可進行開關級的建模。6) 用戶定義原語(UDP)創(chuàng)建的靈活性。用戶定義的原語既可以是組合邏輯;可通過編程語言接口(PLI)機制進一步擴展 Verilog HDL 語言的描述能力。PLI 是允許外部函數訪問 Verilog HDL 模塊內信息,允許設計者與模擬器交互的例程集合。2.3 Verilog HDL 語言開發(fā)軟件---QuartusⅡVerilog HDL是一種硬件描述語言(HDL:Hardware Discription Language),常Sopc 課程設計(論文)用紙6用的Verilog HDL語言開發(fā)軟件有Altera公司的MAX+PLUS II,Quartus II和Xilinx公司的Foundation ISE。本文主要是利用軟件Quartus II的文本輸入設計方式來進行設計的。Quartus II是Altera公司推出的新一代開發(fā)軟件,適合于大規(guī)模邏輯電路設計。Quartus II軟件的設計流程概括為設計輸入、設計編譯、設計仿真和設計下載等過程。Quartus II軟件支持多種編輯輸入法,包括圖形編輯輸入法、VHDL、Verilog HDL的文本輸入法、符合編輯輸入法,以及內存編輯輸入法。Sopc 課程設計(論文)用紙7第 3章 數字鐘 Verilog HDL的設計3.1 設計方案及工作原理3.1.1數字鐘設計原理數字鐘的示意如下圖所示。它由石英晶體振蕩器、分頻器、計數器、譯碼器顯示器和校時電路組成。振蕩器產生穩(wěn)定的高頻脈沖信號,作為數字鐘的時間基準,然后經過分頻器輸出標準秒脈沖。秒計數器滿60后向分計數器進位,分計數器滿60后向小時計數器進位,小時計數器按照“24翻1”規(guī)律計數。計數器的輸出分別經譯碼器送顯示器顯示。計時出現誤差時,可以用校時電路校時、校分。產生鬧鈴和報時音校時時、分、秒計時時間顯示數字鐘示意圖如上圖所示3.1.2 數字鐘功能1) 具有正確的時、分、秒計時功能。2) 計時結果要用數碼管分別顯示進、分、秒的十位和個位。3) 有校時功能。當 S 鍵按下時,分計數器以秒脈沖的速度遞增,并按 60min 循環(huán),即計數到期 59min 后再回到 00。當工 A 鍵按下時,時計數器以秒脈沖的速度遞增,并按 24h 循環(huán),即計數到 23h 后再回 00。Sopc 課程設計(論文)用紙84) 利用揚聲器整點報時。當計時到達 59 分 59 秒時開始報時,在 59 分 50 秒、52 秒、54 秒、56 秒、58 秒時鳴叫,鳴叫聲頻為 500hz;到達 59 分 60 秒時為最后一聲整點報時,頻率為 1khz。3.2 數字鐘鐘控定時器的基本組成數字鐘鐘控定時器由:計數器、D觸發(fā)器、數據選擇器、數據分配器、譯碼器、報時器、鬧時器組、分頻器和一個或非門這九大模塊構成。計數器主要分為24進制計數器和60進制計數器,24進制計數器對數字鐘的小時位計行計數, 60進制對數字鐘的分和秒進行計數。D觸發(fā)器主要是用在對數字進行校準時的按鍵消抖作用,以免在校時的時候產生抖動信號。數據分配器的作用是在動態(tài)譯碼時選擇輸出數據。譯碼器對輸出信號進行譯碼在數碼管上顯示出來,讓大家數字鐘的表示直觀。報時電路是使時鐘在整點有報時功能而設計的。鬧時器是對時鐘進行比較產生鬧時電信號的電路。3.2.1 D觸發(fā)器的設計在本設計中運用到了3 個D觸發(fā)器,它主要是用在對數字進行校準時的按鍵消抖作用,以免在校時的時候產生抖動信號。在電路中用到了 D 觸發(fā)器 74LS74,74LS74 的管腳圖如圖 3-1。D2 Q 5Q 6CLK341PRECLRA74LS74圖 3-1 74LS74 管腳圖觸發(fā)器,它是由門電路構成的邏輯電路,它的輸出具有兩個穩(wěn)定的物理狀態(tài)(高電平和低電平) ,所以它能記憶一位二進制代碼。觸發(fā)器是存放在二進制信息的最基本Sopc 課程設計(論文)用紙9的單元。按其功能可為基本 RS 觸發(fā)器觸、JK 觸發(fā)器、D 觸發(fā)器和 T 觸發(fā)器。這幾種觸發(fā)器都有集成電路產品。其中應用最廣泛的當數 JK 觸發(fā)器和 D 觸發(fā)器。不過,深刻理解 RS 觸發(fā)器對全面掌握觸發(fā)器的工作方式或動作特點是至關重要的。事實上,JK 觸發(fā)器和 D 觸發(fā)器是 RS 觸發(fā)器的改進型,其中 JK 觸發(fā)器保留了兩個數據輸入端,而 D 觸發(fā)器只保留了一個數據輸入端。D 觸發(fā)器有邊沿 D 觸發(fā)器和高電平 D 觸發(fā)器。74LS74 為一個電平 D 觸發(fā)器。3.2.2數據選擇器的設計在多路數據傳送過程中,能夠根據需要將其中任意一路選出來的電路,叫做數據選擇器,也稱多 路 選 擇 器 或多 路 開 關 。 數據選擇器(MUX)的邏輯功能是在地址選擇信號的控制下,從多路數據中選擇一路數據作為輸出信號。通過 QuartusII 軟件進行編譯后,仿真結果如圖 3-2 所示,圖 3-2 2 選一數據選擇器仿真結果打包后成元器件如圖 3-3 所示;圖 3-3 2 選一數據選擇器3.2.3 計數器的設計計數器是一種計算輸入脈沖的時序邏輯網絡,被計數的輸入信號就是時序網絡的時鐘脈沖,它不僅可以計數而且還可以用來完成其他特定的邏輯功能,如測量、定時控制、數字運算等等。Sopc 課程設計(論文)用紙10數字鐘的計數電路是用兩個六十進制計數電路和“24 進制”計數電路實現的。數字鐘的計數電路的設計可以用反饋清零法。當計數器正常計數時,反饋門不起作用,只有當進位脈沖到來時,反饋信號將計數電路清零,實現相應模的循環(huán)計數。以六十進制為例,當計數器從 00,01,02,……,59 計數時,反饋門不起作用,只有當第60 個秒脈沖到來時,反饋信號隨即將計數電路清零,實現模為 60 的循環(huán)計數。下面是用 Verilog HDL 語言編寫的 24 進制、60 進制計數器的程序代碼:1)24 進制計數器程序代碼;module count24(ten,one,clk);output[3:0] ten,one;input clk;reg[3:0] ten,one;always @(posedge clk)beginif(ten[3:0]==2one[3:0]=0;endelse if(one[3:0]==9)beginone[3:0]=0;ten[3:0]=ten[3:0]+1;endelseone[3:0]=one[3:0]+1;endendmodule通過 QuartusII 軟件進行編譯后,仿真結果如圖 3-4 所示,圖 3-4 24 進制計數器仿真結果Sopc 課程設計(論文)用紙11打包后成元器件如圖 3-5 所示;圖 3-5 24 進制計數器2)60 進制計數器程序代碼;module count60(cout,ten,one,clk);output[3:0] ten,one;output cout;input clk;reg[3:0] ten,one;always @(posedge clk)beginif(one[3:0]==9)beginone[3:0]=0;if(ten[3:0]==5)ten[3:0]=0;elseten[3:0]=ten[3:0]+1;endelseone[3:0]=one[3:0]+1;endassign cout=(ten[3:0]==0endmodule通過 QuartusII 軟件進行編譯后,仿真結果如圖 3-6 所示;圖 3-6 60 進制計數器仿真結果Sopc 課程設計(論文)用紙12打包后成元器件如圖 3-7 所示;圖 3-7 60 進制計數器3.2.4 數據分配器能夠將 1 個輸入數據,根據需要傳送到 m 個輸出端的任何一個輸出端的電路,叫做數據分配器,又稱為多路分配器,其邏輯功能正好與數據選擇器相反。電路結構:由與門組成的陣列。分類:1 路-4 路數據分配器(如 74LS139)、1 路-8 路數據分配器(74LS138)等。由于譯碼器和數據分配器的功能非常接近,所以譯碼器一個很重要的應用就是構成數據分配器。 也正因為如此,市場上沒有集成數據分配器產品,只有集成譯碼器產品。通過 QuartusII 軟件進行編譯后,仿真結果如圖 3-8 所示;圖 3-8 數據分配器仿真結果打包后成元器件如圖 3-9 所示;圖 3-9 數據分配器Sopc 課程設計(論文)用紙133.2.5譯碼器譯碼器是一個多輸入、多輸出的組合邏輯電路。它的工作是把給定的代碼進行“翻譯”,變成相應的狀態(tài),使輸出通道中相應的一路有信號輸出。譯碼器在數字系統(tǒng)中有廣泛的用途,不僅用于代碼的轉換、終端的數字顯示,還用于數字分配,存儲器尋址和組合控制信號等。譯碼器可以分為通用譯碼器和顯示譯碼器兩大類。在電路中用的譯碼器是共陰極譯碼器 74LS48,用 74LS48 把輸入的 8421BCD 碼 ABCD 譯成七段輸出 a-g,再由七段數碼管顯示相應的數。 通過 QuartusII 軟件進行編譯后,仿真結果如圖 3-11 所示;圖 3-11 譯碼器仿真結果3.2.6分頻器分頻器的作用是將由石英晶體產生的高頻信號分頻成基時鐘脈沖信號和擴展部分所需的頻率。在此電路中,分頻器的功能主要有兩個:一是產生標準脈沖信號;二是功能擴展電路所需的信號,如仿電臺用的 1KHz 的高頻信號和 500Hz 的低頻信號等.可以組成二分頻電路和四分頻電路和十六分頻器。打包后成元器件如圖 3-12 所示;圖 3-12 2 分頻、4 分頻、16 分頻分頻器3.2.7鬧時器數字鐘在指定的時刻發(fā)出信號,或驅動音響電路“鬧時” ;或對某裝置的電源進行接通或斷開“控制” 。不管是鬧時還是控制,都要求時間準確,即信號的開始時刻與持續(xù)時間必須滿足規(guī)定的要求。在這里將舉例來說明它的工作原理。要求上午 7 時 59 分Sopc 課程設計(論文)用紙14發(fā)出鬧時信號,持續(xù) 1 分鐘。設計如下:7 時 59 分對應數字鐘的時時個位計數器的狀態(tài)為 ,分十位計3210()HQ?數器的狀態(tài)為 ,分個位計數器的狀態(tài)為 ,若32102()MQ? 10M將上述計數器輸出為“1”的所有輸出端經過與門電路去控制音響電路,就可以使音響電路正好在 7 點 59 分響,持續(xù) 1 分鐘后(即 8 點)停響。所以鬧時控制信號 Z 的表達式為 01SQ?21020301()()()HMZQ??式中,M 為上午的信號輸出,要求 M=1。如果用與非門實現的邏輯表達式為: 2102301()()()HMZQQ???在電路圖中用到了 4 輸入二與非門 74LS20,集電極開路的 2 輸入四與非門74LS03,因 OC 門的輸出端可以進行“線與” ,使用時在它們的輸出端與電源+5V 端之間應接一電阻 RL。RL 的值由下式決定:minmaxCOHLIVR??? maxminCOLLIVR??=0.4V, =0.4mA, =2.4V, =50uA, =8mA, =100Ua;m 為負載門輸axOLILminOLVIHOLH入端總個數。取 RL=3.3KΩ。如果控制 1KHz 高音和驅動音響電路的兩極與非門也采用 OC 門,則 RL 的值應該重新計算。由電路圖可以看見,上午 7 點 59 分,音響電路的晶體管導通,則揚聲器發(fā)出1KHz 的聲音。持續(xù) 1 分鐘到 8 點整晶體管因為輸入端為“0”而截止,電路停鬧。鬧時器程序代碼;module nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);output out;input[3:0] m1,m2,h1,h2,tenh,tenm,oneh,onem;input cin, clk1k;Sopc 課程設計(論文)用紙15reg out;always @(m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) beginif(cin) out=0;else if(cin==0)beginif(tenh==h1elseout=0;endendendmodule打包后成元器件如圖 3-13 所示;圖 3-13 鬧時器3.2.8 報時器(一)功能要求報時的功能要求是:每當數字鐘計時快要到正點時,通常按照 4 低音 1 高音的順序發(fā)出間斷聲響,以最后一聲高音結束的時刻為正點時刻。(二)該電路的工作原理電路圖的工作原理舉例來說明;例如設 4 聲低音(約 500Hz)分別 在 59 分 51 秒、53 秒、55 秒及 57 秒,最后一聲高音(約 1000Hz)發(fā)生在 59 秒,它們的持續(xù)時間為1 秒。只有當分十進位的 ,分個位的 ,秒十位的201MQ?310MQ?及秒個位的 時,音響電路才能工作。20SQ?1S(三)對該電路中使用的元件的介紹因為在該電路中所用的元件主要是 74LS00、74LS04 及 74LS20 這些元件在前面的Sopc 課程設計(論文)用紙16電路中已經介紹.這里就不再介紹它了報時器程序代碼;module baoshi(tenm,onem,tens,ones,q500,q1k,a,b);input a,b;input [3:0]tenm,onem,tens,ones;output q500,q1k;reg q500,q1k;always @(tenm or onem or tens or ones)beginif ({tenm,onem}==8'h59else q500=0;endalways @(tenm or onem or tens or ones)beginif ((tenm[3:0]==0000else q1k=0;endendmodule打包后成元器件如圖 3-14 所示;圖 3-14 報時器Sopc 課程設計(論文)用紙173.3 數字鐘原理圖將各模塊組合一起構成如圖 3-15 所示:Sopc 課程設計(論文)用紙18第 4章 軟件調試軟件調試的過程據功能的增加分為幾步:首先,根據原來的 100 進制顯示程序的基礎上編寫成時分秒六位顯示的主程序。該程序將時分秒分成個位和十位分別計算,所以將 60 進制和 24 進制變成 10 進制、6進制和 2 進制。又因為如果時十位為 2 的話,不能大于 3,所以在分十位向時個位進位時得判斷時十位是否為 2,在組員的幫助下經過不斷試驗和修改終于完成。過程比較順利。該電子鐘使用一個鍵來調時,利用長按來選擇所要調的位,用短暫按下來對位進行加 1,前提是時鐘暫停,這個功能也是通過長按來實現的。選位是從秒個位到時十位依次選取,但到時十位以后就回不到秒個位了,就是不會循環(huán)。所以就得對選的位進行檢查,如果到了時十位再按取位鍵就重新賦給秒個位地址。這樣就可以循環(huán)選位了。但在后來的測試中又有了新的問題,如果該位到了 9,對一個位進行加 1 調整就會顯示亂碼。時分秒的十位都會調到 9!對于這個問題費看一些周折。起先構思再加一個減一的鍵,但不但沒有解決這個亂碼問題而且減到了 0 一下很可能也會出現亂碼。所以就轉而尋求程序解決。調時的時候讓它也像正常運行的時候進位?沒見過這樣的。繼而決定在進行加 1 調時的時候檢測該位是否到 10 或 6 或 3。所以就產生了所謂的調時比較子程序,就是在調時的時候將該位跟 10 或 6 或 3 比較。最后,調試的時候卻總是出現這樣的情況:所調的位超過了 9 或 5 或 2 就變成亂碼。比原來進步的地方就是時分秒的十位不用超過 9 就變成亂碼。這說明雖然還沒成功,但還是有前展的。就繼續(xù)調試。Sopc 課程設計(論文)用紙19結論我們對《SOPC 課程設計》這門課的學習主要是理論學習和實驗實踐兩個部分。通過對其理論知識的學習,我對硬件描述語言有了初步的認識,學會利用硬件描述語言完成相應功能系統(tǒng)的設計。在實驗中,我們可以通過自己的實際操作,找出問題,改正錯誤,提出改進之法,大膽創(chuàng)新,使自己的能力在實踐中成長起來。經過這幾周的實驗,我基本了解了實驗設計過程。雖然有些實驗很簡單,但是他們體現了 EDA 設計的大概流程 。通過這么多次的試驗我將一些在課堂上了解了的知識的運用到了實驗中,經過實驗課之后,我對于 VHDL 語言的理解更加深刻了,本來有些不理解的理論知識,都能通過實驗得到一定解答。在實驗的過程中,有時遇到難題的時候,我們上網或去圖書館查找資料,或者向老師和同學們討論,在這個過程中我學習到了一些我們在課堂上學不到的知識。通過這次課程設計使我更加深刻的懂得了理論與實際相結合的重要性!只有理論知識無法實現相關的設計和實際操作,當把所學的理論知識與實踐相結合起來,從理論中得出結論,這樣才能把所學的理論知識更加鞏固至掌握住,才能提高自己的實際動手能力和獨立思考能力。Sopc 課程設計(論文)用紙20參考文獻[1] 李東生.電子設計自動化與 IC 設計.北京:高等教育出版社,2004[2] 蔡明生.電子設計.北京:高等教育出版社,2004[3] 齊洪喜,陸穎.VHDL 電路設計使用教程.北京:清華大學出版社,2004[4] 雷伏容.VHDL 電路設計.北京:清華大學出版社,2006[5] 黃仁欣.EDA 技術實用教程.北京:清華大學出版社,2006[6] 路而紅.電子設計自動化應用技術.北京:高等教育出版社,2004[7] 陳有卿.實用 555 時基電路 300 例.北京:中國電力出版社,2004[8] 晶體管技術編輯部.電子技術——原理.制作.實驗.北京:科學出版社,2005[9] 張亦華,延明.數字電路 EDA 入門——VHDL 程序實例集.北京:北京郵電大學出版社,2003[10] 王延才,趙德申.電子技術實訓.北京:高等教育出版社,2003Sopc 課程設計(論文)用紙21附錄 下面是用 Verilog HDL 語言編寫的 2 選一數據選擇器的程序代碼:module mux2(out,a,b,sel);output out;input a,b,sel;reg out;always @(a or b or sel)beginif(sel==1)out=a;else out=b;endendmodule下面是用 Verilog HDL 語言編寫的 24 進制、60 進制計數器的程序代碼:1)24 進制計數器程序代碼;module count24(ten,one,clk);output[3:0] ten,one;input clk;reg[3:0] ten,one;always @(posedge clk)beginif(ten[3:0]==2one[3:0]=0;endelse if(one[3:0]==9)beginone[3:0]=0;Sopc 課程設計(論文)用紙22ten[3:0]=ten[3:0]+1;endelseone[3:0]=one[3:0]+1;endendmodule2)60 進制計數器程序代碼;module count60(cout,ten,one,clk);output[3:0] ten,one;output cout;input clk;reg[3:0] ten,one;always @(posedge clk)beginif(one[3:0]==9)beginone[3:0]=0;if(ten[3:0]==5)ten[3:0]=0;elseten[3:0]=ten[3:0]+1;endelseone[3:0]=one[3:0]+1;endassign cout=(ten[3:0]==0endmodule數據分配器程序代碼:module x(q,L,hten,hone,mten,mone,sten,sone,clk);output[3:0] q;output[5:0] L;input [3:0] hten,hone,mten,mone,sten,sone;input clk;reg[3:0] q,rel;Sopc 課程設計(論文)用紙23reg[5:0] L;always @(posedge clk)beginif(rel[3:0]==5) rel[3:0]=0;elserel[3:0]=rel[3:0]+1;endalways @(rel )beginif(rel[3:0]==0) begin q[3:0]=sone[3:0]; L[5:0]=6'b111110;endelse if(rel[3:0]==1) begin q[3:0]=sten[3:0];L[5:0]=6'b111101;endelse if(rel[3:0]==2) begin q[3:0]=mone[3:0];L[5:0]=6'b111011;endelse if(rel[3:0]==3) begin q[3:0]=mten[3:0]; L[5:0]=6'b110111;endelse if(rel[3:0]==4) begin q[3:0]=hone[3:0]; L[5:0]=6'b101111;endelse begin q[3:0]=hten[3:0];L[5:0]=6'b011111;endendendmodule譯碼器程序代碼;module yima308(out,in);output[7:0] out;input[3:0] in;reg[7:0] out;always @(in)begincase(in)4'd0:out=8'b00000010;4'd1:out=8'b10011110;4'd2:out=8'b00100100;4'd3:out=8'b00001100;4'd4:out=8'b10011000;4'd5:out=8'b01001000;4'd6:out=8'b01000000;4'd7:out=8'b00011110;4'd8:out=8'b00000000;4'd9:out=8'b00001000;Sopc 課程設計(論文)用紙24endcaseendendmodule1)2 分頻程序代碼;module fen2(a,b,q);input b;output a;output q;reg q;always @(posedge b )beginq=q+1;endassign a=(q==4'd1)?1:0;endmodule2)4 分頻程序代碼;module fen4(a,b,q);input b;output a;output[1:0] q;reg[1:0]q;always @(posedge b )beginq=q+1;endassign a=(q==2'd3)?1:0;endmodule3)16 分頻程序代碼;module fen16(a,b,q);input b;output a;output[3:0] q;reg[3:0]q;always @(posedge b )beginSopc 課程設計(論文)用紙25q=q+1;endassign a=(q==4'd15)?1:0;endmodule鬧時器程序代碼;module nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);output out;input[3:0] m1,m2,h1,h2,tenh,tenm,oneh,onem;input cin, clk1k;reg out;always @(m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) beginif(cin) out=0;else if(cin==0)beginif(tenh==h1elseout=0;endendendmodule報時器程序代碼;module baoshi(tenm,onem,tens,ones,q500,q1k,a,b);input a,b;input [3:0]tenm,onem,tens,ones;output q500,q1k;reg q500,q1k;always @(tenm or onem or tens or ones)beginif ({tenm,onem}==8'h59else q500=0;endalways @(tenm or onem or tens or ones)beginif ((tenm[3:0]==0000else q1k=0;endendmodule- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- Sopc 課程設計 論文 數字
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://zhongcaozhi.com.cn/p-398397.html