版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 物理與電子信息學(xué)院</b></p><p> SOPC技術(shù)課程設(shè)計(jì)報(bào)告書</p><p> 專業(yè)班級(jí): 09電信本 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教
2、師: 老師 </p><p> 設(shè)計(jì)時(shí)間: </p><p><b> 摘 要</b></p><p> 本課題設(shè)計(jì)為24小時(shí)制的多功能數(shù)字鐘,具有時(shí)鐘時(shí)間設(shè)置、鬧鐘時(shí)間設(shè)置、鬧鐘開、鬧鐘關(guān)等功能,數(shù)字顯示小時(shí)、分鐘、秒,鬧鐘就緒燈,蜂鳴器。</p><p> 在設(shè)計(jì)中采用
3、EDA自動(dòng)化設(shè)計(jì)技術(shù)。以計(jì)算機(jī)為基本平臺(tái),以硬件描述語言為系統(tǒng)邏輯描述表達(dá)方式,以EDA工具作為開發(fā)環(huán)境,以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以專用集成電路ASIC為目標(biāo)器件,以電子系統(tǒng)設(shè)計(jì)為應(yīng)用方向的電子產(chǎn)品自動(dòng)化設(shè)計(jì)過程。這樣的設(shè)計(jì)方法,大大的縮短了設(shè)計(jì)的周期,降低了設(shè)計(jì)成本。設(shè)計(jì)出來的數(shù)字鐘具有功能多、體積小、功耗低的特點(diǎn)。在論文中主要涉及的內(nèi)容有:</p><p> 介紹Verilog HDL語言。<
4、;/p><p> 介紹在QuartusII軟件上對(duì)數(shù)字鐘的設(shè)計(jì)。</p><p> 介紹系統(tǒng)仿真結(jié)果和硬件驗(yàn)證與分析。</p><p> 對(duì)整個(gè)設(shè)計(jì)系統(tǒng)進(jìn)行總結(jié)。</p><p> 關(guān)鍵詞: 電子設(shè)計(jì)自動(dòng)化 Verilog HDL 可編程邏輯器件</p><p><b> 目 錄</b>
5、;</p><p><b> 摘 要I</b></p><p><b> 第1章 緒 論3</b></p><p> 第2章 數(shù)字鐘Verilog HDL的設(shè)計(jì)7</p><p> 2.1設(shè)計(jì)方案及工作原理7</p><p> 2.1.1數(shù)字鐘設(shè)計(jì)原理
6、7</p><p> 2.1.2 數(shù)字鐘功能7</p><p> 2.2 數(shù)字鐘鐘控定時(shí)器的基本組成8</p><p> 2.2.1 D觸發(fā)器的設(shè)計(jì)8</p><p> 2.2.2數(shù)據(jù)選擇器的設(shè)計(jì)9</p><p> 2.2.3 計(jì)數(shù)器的設(shè)計(jì)10</p><p> 2.2
7、.4 數(shù)據(jù)分配器12</p><p> 2.2.5譯碼器13</p><p> 2.2.6分頻器15</p><p> 2.2.7鬧時(shí)器16</p><p> 2.2.8 報(bào)時(shí)器17</p><p> 2.3 數(shù)字鐘原理圖19</p><p> 第3章 軟件調(diào)試20&l
8、t;/p><p><b> 結(jié)論21</b></p><p><b> 參考文獻(xiàn)22</b></p><p><b> 附錄23</b></p><p><b> 第1章 緒 論</b></p><p> 數(shù)字鐘是一種實(shí)
9、現(xiàn)時(shí)、分、秒計(jì)時(shí)的鐘表。與機(jī)械鐘相比具有更高的準(zhǔn)確性和直觀性,具有更長(zhǎng)的使用壽命,已得到廣泛的使用。數(shù)字鐘的設(shè)計(jì)方法有許多種,例如可用中小規(guī)模集成電路組成電子鐘,也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘,還可以利用單片機(jī)來實(shí)現(xiàn)電子鐘等等。這些方法都各有其特點(diǎn),其中利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,以便于功能的擴(kuò)展。</p><p> 第2章 數(shù)字鐘Verilog HDL的設(shè)計(jì)&
10、lt;/p><p> 2.1設(shè)計(jì)方案及工作原理</p><p> 2.1.1數(shù)字鐘設(shè)計(jì)原理</p><p> 數(shù)字鐘的示意如下圖所示。它由石英晶體振蕩器、分頻器、計(jì)數(shù)器、譯碼器顯示器和校時(shí)電路組成。振蕩器產(chǎn)生穩(wěn)定的高頻脈沖信號(hào),作為數(shù)字鐘的時(shí)間基準(zhǔn),然后經(jīng)過分頻器輸出標(biāo)準(zhǔn)秒脈沖。秒計(jì)數(shù)器滿60后向分計(jì)數(shù)器進(jìn)位,分計(jì)數(shù)器滿60后向小時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按照“24
11、翻1”規(guī)律計(jì)數(shù)。計(jì)數(shù)器的輸出分別經(jīng)譯碼器送顯示器顯示。計(jì)時(shí)出現(xiàn)誤差時(shí),可以用校時(shí)電路校時(shí)、校分。</p><p> 數(shù)字鐘示意圖如上圖所示</p><p> 2.1.2 數(shù)字鐘功能</p><p> 具有正確的時(shí)、分、秒計(jì)時(shí)功能。</p><p> 計(jì)時(shí)結(jié)果要用數(shù)碼管分別顯示進(jìn)、分、秒的十位和個(gè)位。</p><p&
12、gt; 有校時(shí)功能。當(dāng)S鍵按下時(shí),分計(jì)數(shù)器以秒脈沖的速度遞增,并按60min循環(huán),即計(jì)數(shù)到期59min后再回到00。當(dāng)工A鍵按下時(shí),時(shí)計(jì)數(shù)器以秒脈沖的速度遞增,并按24h循環(huán),即計(jì)數(shù)到23h后再回00。</p><p> 利用揚(yáng)聲器整點(diǎn)報(bào)時(shí)。當(dāng)計(jì)時(shí)到達(dá)59分59秒時(shí)開始報(bào)時(shí),在59分50秒、52秒、54秒、56秒、58秒時(shí)鳴叫,鳴叫聲頻為500hz;到達(dá)59分60秒時(shí)為最后一聲整點(diǎn)報(bào)時(shí),頻率為1khz。<
13、;/p><p> 2.2 數(shù)字鐘鐘控定時(shí)器的基本組成</p><p> 數(shù)字鐘鐘控定時(shí)器由:計(jì)數(shù)器、D觸發(fā)器、數(shù)據(jù)選擇器、數(shù)據(jù)分配器、譯碼器、報(bào)時(shí)器、鬧時(shí)器組、分頻器和一個(gè)或非門這九大模塊構(gòu)成。計(jì)數(shù)器主要分為24進(jìn)制計(jì)數(shù)器和60進(jìn)制計(jì)數(shù)器,24進(jìn)制計(jì)數(shù)器對(duì)數(shù)字鐘的小時(shí)位計(jì)行計(jì)數(shù),60進(jìn)制對(duì)數(shù)字鐘的分和秒進(jìn)行計(jì)數(shù)。D觸發(fā)器主要是用在對(duì)數(shù)字進(jìn)行校準(zhǔn)時(shí)的按鍵消抖作用,以免在校時(shí)的時(shí)候產(chǎn)生抖動(dòng)信號(hào)
14、。數(shù)據(jù)分配器的作用是在動(dòng)態(tài)譯碼時(shí)選擇輸出數(shù)據(jù)。譯碼器對(duì)輸出信號(hào)進(jìn)行譯碼在數(shù)碼管上顯示出來,讓大家數(shù)字鐘的表示直觀。報(bào)時(shí)電路是使時(shí)鐘在整點(diǎn)有報(bào)時(shí)功能而設(shè)計(jì)的。鬧時(shí)器是對(duì)時(shí)鐘進(jìn)行比較產(chǎn)生鬧時(shí)電信號(hào)的電路。</p><p> 2.2.1 D觸發(fā)器的設(shè)計(jì)</p><p> 在本設(shè)計(jì)中運(yùn)用到了3個(gè)D觸發(fā)器,它主要是用在對(duì)數(shù)字進(jìn)行校準(zhǔn)時(shí)的按鍵消抖作用,以免在校時(shí)的時(shí)候產(chǎn)生抖動(dòng)信號(hào)。</p&g
15、t;<p> 在電路中用到了D觸發(fā)器74LS74,74LS74的管腳圖如圖3-1。</p><p> 圖3-1 74LS74管腳圖</p><p> 觸發(fā)器,它是由門電路構(gòu)成的邏輯電路,它的輸出具有兩個(gè)穩(wěn)定的物理狀態(tài)(高電平和低電平),所以它能記憶一位二進(jìn)制代碼。觸發(fā)器是存放在二進(jìn)制信息的最基本的單元。按其功能可為基本RS觸發(fā)器觸、JK觸發(fā)器、D觸發(fā)器和T觸發(fā)器。<
16、;/p><p> 這幾種觸發(fā)器都有集成電路產(chǎn)品。其中應(yīng)用最廣泛的當(dāng)數(shù)JK觸發(fā)器和D觸發(fā)器。不過,深刻理解RS觸發(fā)器對(duì)全面掌握觸發(fā)器的工作方式或動(dòng)作特點(diǎn)是至關(guān)重要的。事實(shí)上,JK觸發(fā)器和D觸發(fā)器是RS觸發(fā)器的改進(jìn)型,其中JK觸發(fā)器保留了兩個(gè)數(shù)據(jù)輸入端,而D觸發(fā)器只保留了一個(gè)數(shù)據(jù)輸入端。D觸發(fā)器有邊沿D觸發(fā)器和高電平D觸發(fā)器。74LS74為一個(gè)電平D觸發(fā)器。</p><p> 2.2.2數(shù)據(jù)選
17、擇器的設(shè)計(jì)</p><p> 在多路數(shù)據(jù)傳送過程中,能夠根據(jù)需要將其中任意一路選出來的電路,叫做數(shù)據(jù)選擇器,也稱多路選擇器或多路開關(guān)。數(shù)據(jù)選擇器(MUX)的邏輯功能是在地址選擇信號(hào)的控制下,從多路數(shù)據(jù)中選擇一路數(shù)據(jù)作為輸出信號(hào)。</p><p> 通過QuartusII軟件進(jìn)行編譯后,仿真結(jié)果如圖3-2所示,</p><p> 圖3-2 2選一數(shù)據(jù)選擇器仿真
18、結(jié)果</p><p> 打包后成元器件如圖3-3所示;</p><p> 圖3-3 2選一數(shù)據(jù)選擇器</p><p> 2.2.3 計(jì)數(shù)器的設(shè)計(jì)</p><p> 計(jì)數(shù)器是一種計(jì)算輸入脈沖的時(shí)序邏輯網(wǎng)絡(luò),被計(jì)數(shù)的輸入信號(hào)就是時(shí)序網(wǎng)絡(luò)的時(shí)鐘脈沖,它不僅可以計(jì)數(shù)而且還可以用來完成其他特定的邏輯功能,如測(cè)量、定時(shí)控制、數(shù)字運(yùn)算等等。<
19、;/p><p> 數(shù)字鐘的計(jì)數(shù)電路是用兩個(gè)六十進(jìn)制計(jì)數(shù)電路和“24進(jìn)制”計(jì)數(shù)電路實(shí)現(xiàn)的。數(shù)字鐘的計(jì)數(shù)電路的設(shè)計(jì)可以用反饋清零法。當(dāng)計(jì)數(shù)器正常計(jì)數(shù)時(shí),反饋門不起作用,只有當(dāng)進(jìn)位脈沖到來時(shí),反饋信號(hào)將計(jì)數(shù)電路清零,實(shí)現(xiàn)相應(yīng)模的循環(huán)計(jì)數(shù)。以六十進(jìn)制為例,當(dāng)計(jì)數(shù)器從00,01,02,……,59計(jì)數(shù)時(shí),反饋門不起作用,只有當(dāng)?shù)?0個(gè)秒脈沖到來時(shí),反饋信號(hào)隨即將計(jì)數(shù)電路清零,實(shí)現(xiàn)模為60的循環(huán)計(jì)數(shù)。</p>&l
20、t;p> 下面是用Verilog HDL語言編寫的24進(jìn)制、60進(jìn)制計(jì)數(shù)器的程序代碼:</p><p> 1)24進(jìn)制計(jì)數(shù)器程序代碼;</p><p> module count24(ten,one,clk);</p><p> output[3:0] ten,one;</p><p> input clk;</p>
21、;<p> reg[3:0] ten,one;</p><p> always @(posedge clk)</p><p><b> begin</b></p><p> if(ten[3:0]==2&&one[3:0]==3)</p><p><b> begin&l
22、t;/b></p><p> ten[3:0]<=0;</p><p> one[3:0]<=0;</p><p><b> end</b></p><p> else if(one[3:0]==9)</p><p><b> begin</b>&
23、lt;/p><p> one[3:0]<=0;</p><p> ten[3:0]<=ten[3:0]+1;</p><p><b> end</b></p><p><b> else</b></p><p> one[3:0]<=one[3:0]+
24、1;</p><p><b> end</b></p><p><b> endmodule</b></p><p> 通過QuartusII軟件進(jìn)行編譯后,仿真結(jié)果如圖3-4所示,</p><p> 圖3-4 24進(jìn)制計(jì)數(shù)器仿真結(jié)果</p><p> 打包后成元
25、器件如圖3-5所示;</p><p> 圖3-5 24進(jìn)制計(jì)數(shù)器</p><p> 2)60進(jìn)制計(jì)數(shù)器程序代碼;</p><p> module count60(cout,ten,one,clk);</p><p> output[3:0] ten,one;</p><p> output cout;<
26、;/p><p> input clk;</p><p> reg[3:0] ten,one;</p><p> always @(posedge clk)</p><p><b> begin</b></p><p> if(one[3:0]==9)</p><p>
27、<b> begin</b></p><p> one[3:0]<=0;</p><p> if(ten[3:0]==5)</p><p> ten[3:0]<=0;</p><p><b> else</b></p><p> ten[3:0]<
28、;=ten[3:0]+1;</p><p><b> end</b></p><p><b> else</b></p><p> one[3:0]<=one[3:0]+1;</p><p><b> end</b></p><p> a
29、ssign cout=(ten[3:0]==0&&one[3:0]==0)?1:0;</p><p><b> endmodule</b></p><p> 通過QuartusII軟件進(jìn)行編譯后,仿真結(jié)果如圖3-6所示;</p><p> 圖3-6 60進(jìn)制計(jì)數(shù)器仿真結(jié)果</p><p> 打包
30、后成元器件如圖3-7所示;</p><p> 圖3-7 60進(jìn)制計(jì)數(shù)器</p><p> 2.2.4 數(shù)據(jù)分配器</p><p> 能夠?qū)?個(gè)輸入數(shù)據(jù),根據(jù)需要傳送到m個(gè)輸出端的任何一個(gè)輸出端的電路,叫做數(shù)據(jù)分配器,又稱為多路分配器,其邏輯功能正好與數(shù)據(jù)選擇器相反。電路結(jié)構(gòu):由與門組成的陣列。分類:1路-4路數(shù)據(jù)分配器(如74LS139)、1路-8路數(shù)據(jù)分配
31、器(74LS138)等。由于譯碼器和數(shù)據(jù)分配器的功能非常接近,所以譯碼器一個(gè)很重要的應(yīng)用就是構(gòu)成數(shù)據(jù)分配器。 也正因?yàn)槿绱?,市?chǎng)上沒有集成數(shù)據(jù)分配器產(chǎn)品,只有集成譯碼器產(chǎn)品。</p><p> 通過QuartusII軟件進(jìn)行編譯后,仿真結(jié)果如圖3-8所示;</p><p> 圖3-8 數(shù)據(jù)分配器仿真結(jié)果</p><p> 打包后成元器件如圖3-9所示;<
32、;/p><p> 圖3-9 數(shù)據(jù)分配器</p><p><b> 2.2.5譯碼器</b></p><p> 譯碼器是一個(gè)多輸入、多輸出的組合邏輯電路。它的工作是把給定的代碼進(jìn)行“翻譯”,變成相應(yīng)的狀態(tài),使輸出通道中相應(yīng)的一路有信號(hào)輸出。譯碼器在數(shù)字系統(tǒng)中有廣泛的用途,不僅用于代碼的轉(zhuǎn)換、終端的數(shù)字顯示,還用于數(shù)字分配,存儲(chǔ)器尋址和組合控制信
33、號(hào)等。譯碼器可以分為通用譯碼器和顯示譯碼器兩大類。在電路中用的譯碼器是共陰極譯碼器74LS48,用74LS48把輸入的8421BCD碼ABCD譯成七段輸出a-g,再由七段數(shù)碼管顯示相應(yīng)的數(shù)。 </p><p> 通過QuartusII軟件進(jìn)行編譯后,仿真結(jié)果如圖3-11所示;</p><p> 圖3-11 譯碼器仿真結(jié)果</p><p><b>
34、2.2.6分頻器</b></p><p> 分頻器的作用是將由石英晶體產(chǎn)生的高頻信號(hào)分頻成基時(shí)鐘脈沖信號(hào)和擴(kuò)展部分所需的頻率。在此電路中,分頻器的功能主要有兩個(gè):一是產(chǎn)生標(biāo)準(zhǔn)脈沖信號(hào);二是功能擴(kuò)展電路所需的信號(hào),如仿電臺(tái)用的1KHz的高頻信號(hào)和500Hz的低頻信號(hào)等.可以組成二分頻電路和四分頻電路和十六分頻器。</p><p> 打包后成元器件如圖3-12所示;</p
35、><p> 圖3-12 2分頻、4分頻、16分頻分頻器</p><p><b> 2.2.7鬧時(shí)器</b></p><p> 數(shù)字鐘在指定的時(shí)刻發(fā)出信號(hào),或驅(qū)動(dòng)音響電路“鬧時(shí)”;或?qū)δ逞b置的電源進(jìn)行接通或斷開“控制”。不管是鬧時(shí)還是控制,都要求時(shí)間準(zhǔn)確,即信號(hào)的開始時(shí)刻與持續(xù)時(shí)間必須滿足規(guī)定的要求。在這里將舉例來說明它的工作原理。要求上午7時(shí)
36、59分發(fā)出鬧時(shí)信號(hào),持續(xù)1分鐘。設(shè)計(jì)如下:</p><p> 7時(shí)59分對(duì)應(yīng)數(shù)字鐘的時(shí)時(shí)個(gè)位計(jì)數(shù)器的狀態(tài)為,分十位計(jì)數(shù)器的狀態(tài)為,分個(gè)位計(jì)數(shù)器的狀態(tài)為,若將上述計(jì)數(shù)器輸出為“1”的所有輸出端經(jīng)過與門電路去控制音響電路,就可以使音響電路正好在7點(diǎn)59分響,持續(xù)1分鐘后(即8點(diǎn))停響。所以鬧時(shí)控制信號(hào)Z的表達(dá)式為</p><p> 式中,M為上午的信號(hào)輸出,要求M=1。</p>
37、<p> 如果用與非門實(shí)現(xiàn)的邏輯表達(dá)式為:</p><p> 在電路圖中用到了4輸入二與非門74LS20,集電極開路的2輸入四與非門74LS03,因OC門的輸出端可以進(jìn)行“線與”,使用時(shí)在它們的輸出端與電源+5V端之間應(yīng)接一電阻RL。RL的值由下式?jīng)Q定:</p><p> =0.4V,=0.4mA,=2.4V,=50uA,=8mA,=100Ua;m為負(fù)載門輸入端總個(gè)數(shù)。
38、</p><p> 取RL=3.3KΩ。如果控制1KHz高音和驅(qū)動(dòng)音響電路的兩極與非門也采用OC門,則RL的值應(yīng)該重新計(jì)算。</p><p> 由電路圖可以看見,上午7點(diǎn)59分,音響電路的晶體管導(dǎo)通,則揚(yáng)聲器發(fā)出1KHz的聲音。持續(xù)1分鐘到8點(diǎn)整晶體管因?yàn)檩斎攵藶椤?”而截止,電路停鬧。</p><p><b> 鬧時(shí)器程序代碼;</b>
39、</p><p> module nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);</p><p> output out;</p><p> input[3:0] m1,m2,h1,h2,tenh,tenm,oneh,onem;</p><p> input cin, cl
40、k1k;</p><p><b> reg out;</b></p><p> always @(m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) </p><p><b> begin</b></p><p> if(
41、cin) out<=0;</p><p> else if(cin==0)</p><p><b> begin</b></p><p> if(tenh==h1&&oneh==h2&&tenm==m1&&onem==m2) out<=clk1k;</p><
42、p><b> else</b></p><p><b> out<=0;</b></p><p><b> end</b></p><p><b> end</b></p><p><b> endmodule</b&
43、gt;</p><p> 打包后成元器件如圖3-13所示;</p><p> 圖3-13 鬧時(shí)器</p><p><b> 2.2.8 報(bào)時(shí)器</b></p><p><b> ?。ㄒ唬┕δ芤?lt;/b></p><p> 報(bào)時(shí)的功能要求是:每當(dāng)數(shù)字鐘計(jì)時(shí)快要到正點(diǎn)時(shí)
44、,通常按照4低音1高音的順序發(fā)出間斷聲響,以最后一聲高音結(jié)束的時(shí)刻為正點(diǎn)時(shí)刻。</p><p> ?。ǘ┰撾娐返墓ぷ髟?lt;/p><p> 電路圖的工作原理舉例來說明;例如設(shè)4聲低音(約500Hz)分別 在59分51秒、53秒、55秒及57秒,最后一聲高音(約1000Hz)發(fā)生在59秒,它們的持續(xù)時(shí)間為1秒。只有當(dāng)分十進(jìn)位的,分個(gè)位的,秒十位的及秒個(gè)位的時(shí),音響電路才能工作。</
45、p><p> ?。ㄈ?duì)該電路中使用的元件的介紹</p><p> 因?yàn)樵谠撾娐分兴玫脑饕?4LS00、74LS04及74LS20這些元件在前面的電路中已經(jīng)介紹.這里就不再介紹它了</p><p><b> 報(bào)時(shí)器程序代碼;</b></p><p> module baoshi(tenm,onem,tens,o
46、nes,q500,q1k,a,b);</p><p> input a,b;</p><p> input [3:0]tenm,onem,tens,ones;</p><p> output q500,q1k;</p><p> reg q500,q1k;</p><p> always @(tenm or
47、 onem or tens or ones)</p><p><b> begin</b></p><p> if ({tenm,onem}==8'h59&&{tens,ones}==8'h50||{tenm,onem}==8'h59&&{tens,ones}==8'h52||</p>
48、<p> {tenm,onem}==8'h59&&{tens,ones}==8'h54||{tenm,onem}==8'h59&&{tens,ones}==8'h56||</p><p> {tenm,onem}==8'h59&&{tens,ones}==8'h58)</p><p&g
49、t;<b> q500<=a;</b></p><p> else q500<=0;</p><p><b> end</b></p><p> always @(tenm or onem or tens or ones)</p><p><b> begin<
50、/b></p><p> if ((tenm[3:0]==0000&&onem[3:0]==0000)&&(tens[3:0]==0000&&ones[3:0]==0000))</p><p><b> q1k<=b;</b></p><p> else q1k<=0;&l
51、t;/p><p><b> end</b></p><p><b> endmodule</b></p><p> 打包后成元器件如圖3-14所示;</p><p><b> 圖3-14 報(bào)時(shí)器</b></p><p> 2.3 數(shù)字鐘原理圖<
52、;/p><p> 將各模塊組合一起構(gòu)成如圖3-15所示:</p><p><b> 第3章 軟件調(diào)試</b></p><p> 軟件調(diào)試的過程據(jù)功能的增加分為幾步:</p><p> 首先,根據(jù)原來的100進(jìn)制顯示程序的基礎(chǔ)上編寫成時(shí)分秒六位顯示的主程序。該程序?qū)r(shí)分秒分成個(gè)位和十位分別計(jì)算,所以將60進(jìn)制和24進(jìn)制
53、變成10進(jìn)制、6進(jìn)制和2進(jìn)制。又因?yàn)槿绻麜r(shí)十位為2的話,不能大于3,所以在分十位向時(shí)個(gè)位進(jìn)位時(shí)得判斷時(shí)十位是否為2,在組員的幫助下經(jīng)過不斷試驗(yàn)和修改終于完成。過程比較順利。</p><p> 該電子鐘使用一個(gè)鍵來調(diào)時(shí),利用長(zhǎng)按來選擇所要調(diào)的位,用短暫按下來對(duì)位進(jìn)行加1,前提是時(shí)鐘暫停,這個(gè)功能也是通過長(zhǎng)按來實(shí)現(xiàn)的。選位是從秒個(gè)位到時(shí)十位依次選取,但到時(shí)十位以后就回不到秒個(gè)位了,就是不會(huì)循環(huán)。所以就得對(duì)選的位進(jìn)行
54、檢查,如果到了時(shí)十位再按取位鍵就重新賦給秒個(gè)位地址。這樣就可以循環(huán)選位了。但在后來的測(cè)試中又有了新的問題,如果該位到了9,對(duì)一個(gè)位進(jìn)行加1調(diào)整就會(huì)顯示亂碼。時(shí)分秒的十位都會(huì)調(diào)到9!</p><p> 對(duì)于這個(gè)問題費(fèi)看一些周折。起先構(gòu)思再加一個(gè)減一的鍵,但不但沒有解決這個(gè)亂碼問題而且減到了0一下很可能也會(huì)出現(xiàn)亂碼。所以就轉(zhuǎn)而尋求程序解決。調(diào)時(shí)的時(shí)候讓它也像正常運(yùn)行的時(shí)候進(jìn)位?沒見過這樣的。繼而決定在進(jìn)行加1調(diào)時(shí)的
55、時(shí)候檢測(cè)該位是否到10或6或3。所以就產(chǎn)生了所謂的調(diào)時(shí)比較子程序,就是在調(diào)時(shí)的時(shí)候?qū)⒃撐桓?0或6或3比較。最后,調(diào)試的時(shí)候卻總是出現(xiàn)這樣的情況:所調(diào)的位超過了9或5或2就變成亂碼。比原來進(jìn)步的地方就是時(shí)分秒的十位不用超過9就變成亂碼。這說明雖然還沒成功,但還是有前展的。就繼續(xù)調(diào)試。</p><p><b> 結(jié)論</b></p><p> 我們對(duì)《SOPC課程設(shè)
56、計(jì)》這門課的學(xué)習(xí)主要是理論學(xué)習(xí)和實(shí)驗(yàn)實(shí)踐兩個(gè)部分。通過對(duì)其理論知識(shí)的學(xué)習(xí),我對(duì)硬件描述語言有了初步的認(rèn)識(shí),學(xué)會(huì)利用硬件描述語言完成相應(yīng)功能系統(tǒng)的設(shè)計(jì)。在實(shí)驗(yàn)中,我們可以通過自己的實(shí)際操作,找出問題,改正錯(cuò)誤,提出改進(jìn)之法,大膽創(chuàng)新,使自己的能力在實(shí)踐中成長(zhǎng)起來。經(jīng)過這幾周的實(shí)驗(yàn),我基本了解了實(shí)驗(yàn)設(shè)計(jì)過程。雖然有些實(shí)驗(yàn)很簡(jiǎn)單,但是他們體現(xiàn)了EDA設(shè)計(jì)的大概流程 。通過這么多次的試驗(yàn)我將一些在課堂上了解了的知識(shí)的運(yùn)用到了實(shí)驗(yàn)中,經(jīng)過實(shí)驗(yàn)課之
57、后,我對(duì)于VHDL語言的理解更加深刻了,本來有些不理解的理論知識(shí),都能通過實(shí)驗(yàn)得到一定解答。在實(shí)驗(yàn)的過程中,有時(shí)遇到難題的時(shí)候,我們上網(wǎng)或去圖書館查找資料,或者向老師和同學(xué)們討論,在這個(gè)過程中我學(xué)習(xí)到了一些我們?cè)谡n堂上學(xué)不到的知識(shí)。通過這次課程設(shè)計(jì)使我更加深刻的懂得了理論與實(shí)際相結(jié)合的重要性!只有理論知識(shí)無法實(shí)現(xiàn)相關(guān)的設(shè)計(jì)和實(shí)際操作,當(dāng)把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,這樣才能把所學(xué)的理論知識(shí)更加鞏固至掌握住,才能提高
58、自己的實(shí)際動(dòng)手能力和獨(dú)立思考能力。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李東生.電子設(shè)計(jì)自動(dòng)化與IC設(shè)計(jì).北京:高等教育出版社,2004</p><p> [2] 蔡明生.電子設(shè)計(jì).北京:高等教育出版社,2004</p><p> [3] 齊洪喜,陸穎.VHDL電路設(shè)計(jì)使用教程.
59、北京:清華大學(xué)出版社,2004</p><p> [4] 雷伏容.VHDL電路設(shè)計(jì).北京:清華大學(xué)出版社,2006</p><p> [5] 黃仁欣.EDA技術(shù)實(shí)用教程.北京:清華大學(xué)出版社,2006</p><p> [6] 路而紅.電子設(shè)計(jì)自動(dòng)化應(yīng)用技術(shù).北京:高等教育出版社,2004</p><p> [7] 陳有卿.實(shí)用555
60、時(shí)基電路300例.北京:中國(guó)電力出版社,2004</p><p> [8] 晶體管技術(shù)編輯部.電子技術(shù)——原理.制作.實(shí)驗(yàn).北京:科學(xué)出版社,2005</p><p> [9] 張亦華,延明.數(shù)字電路EDA入門——VHDL程序?qū)嵗?北京:北京郵電大學(xué)出版社,2003</p><p> [10] 王延才,趙德申.電子技術(shù)實(shí)訓(xùn).北京:高等教育出版社,2003&l
61、t;/p><p> 附錄 </p><p> 下面是用Verilog HDL語言編寫的2選一數(shù)據(jù)選擇器的程序代碼:</p><p> module mux2(out,a,b,sel);</p><p> output out;</p><p> input a,b,sel;<
62、;/p><p><b> reg out;</b></p><p> always @(a or b or sel)</p><p><b> begin</b></p><p> if(sel==1)</p><p><b> out=a;</b>
63、;</p><p> else out=b;</p><p><b> end</b></p><p><b> endmodule</b></p><p> 下面是用Verilog HDL語言編寫的24進(jìn)制、60進(jìn)制計(jì)數(shù)器的程序代碼:</p><p> 1)24
64、進(jìn)制計(jì)數(shù)器程序代碼;</p><p> module count24(ten,one,clk);</p><p> output[3:0] ten,one;</p><p> input clk;</p><p> reg[3:0] ten,one;</p><p> always @(posedge clk
65、)</p><p><b> begin</b></p><p> if(ten[3:0]==2&&one[3:0]==3)</p><p><b> begin</b></p><p> ten[3:0]<=0;</p><p> one[3
66、:0]<=0;</p><p><b> end</b></p><p> else if(one[3:0]==9)</p><p><b> begin</b></p><p> one[3:0]<=0;</p><p> ten[3:0]<=t
67、en[3:0]+1;</p><p><b> end</b></p><p><b> else</b></p><p> one[3:0]<=one[3:0]+1;</p><p><b> end</b></p><p><b&
68、gt; endmodule</b></p><p> 2)60進(jìn)制計(jì)數(shù)器程序代碼;</p><p> module count60(cout,ten,one,clk);</p><p> output[3:0] ten,one;</p><p> output cout;</p><p> in
69、put clk;</p><p> reg[3:0] ten,one;</p><p> always @(posedge clk)</p><p><b> begin</b></p><p> if(one[3:0]==9)</p><p><b> begin</b
70、></p><p> one[3:0]<=0;</p><p> if(ten[3:0]==5)</p><p> ten[3:0]<=0;</p><p><b> else</b></p><p> ten[3:0]<=ten[3:0]+1;</p>
71、;<p><b> end</b></p><p><b> else</b></p><p> one[3:0]<=one[3:0]+1;</p><p><b> end</b></p><p> assign cout=(ten[3:0]==
72、0&&one[3:0]==0)?1:0;</p><p><b> endmodule</b></p><p> 數(shù)據(jù)分配器程序代碼:</p><p> module x(q,L,hten,hone,mten,mone,sten,sone,clk);</p><p> output[3:0] q;
73、</p><p> output[5:0] L;</p><p> input [3:0] hten,hone,mten,mone,sten,sone;</p><p> input clk;</p><p> reg[3:0] q,rel;</p><p> reg[5:0] L;</p>&
74、lt;p> always @(posedge clk)</p><p><b> begin</b></p><p> if(rel[3:0]==5) rel[3:0]<=0;</p><p><b> else</b></p><p> rel[3:0]<=rel[3:
75、0]+1;</p><p><b> end</b></p><p> always @(rel )</p><p><b> begin</b></p><p> if(rel[3:0]==0) begin q[3:0]<=sone[3:0]; L[5:0]<=6'b1
76、11110;end</p><p> else if(rel[3:0]==1) begin q[3:0]<=sten[3:0];L[5:0]<=6'b111101;end</p><p> else if(rel[3:0]==2) begin q[3:0]<=mone[3:0];L[5:0]<=6'b111011;end</p>&
77、lt;p> else if(rel[3:0]==3) begin q[3:0]<=mten[3:0]; L[5:0]<=6'b110111;end</p><p> else if(rel[3:0]==4) begin q[3:0]<=hone[3:0]; L[5:0]<=6'b101111;end</p><p> else begin
78、 q[3:0]<=hten[3:0];L[5:0]<=6'b011111;end</p><p><b> end</b></p><p><b> endmodule</b></p><p><b> 譯碼器程序代碼;</b></p><p> m
79、odule yima308(out,in);</p><p> output[7:0] out;</p><p> input[3:0] in;</p><p> reg[7:0] out;</p><p> always @(in)</p><p><b> begin</b><
80、/p><p><b> case(in)</b></p><p> 4'd0:out=8'b00000010;</p><p> 4'd1:out=8'b10011110;</p><p> 4'd2:out=8'b00100100;</p><p&
81、gt; 4'd3:out=8'b00001100;</p><p> 4'd4:out=8'b10011000;</p><p> 4'd5:out=8'b01001000;</p><p> 4'd6:out=8'b01000000;</p><p> 4'd
82、7:out=8'b00011110;</p><p> 4'd8:out=8'b00000000;</p><p> 4'd9:out=8'b00001000;</p><p><b> endcase</b></p><p><b> end</b>
83、</p><p><b> endmodule</b></p><p> 1)2分頻程序代碼;</p><p> module fen2(a,b,q);</p><p><b> input b;</b></p><p><b> output a;<
84、;/b></p><p><b> output q;</b></p><p><b> reg q;</b></p><p> always @(posedge b )</p><p><b> begin</b></p><p><
85、;b> q<=q+1;</b></p><p><b> end</b></p><p> assign a=(q==4'd1)?1:0;</p><p><b> endmodule</b></p><p> 2)4分頻程序代碼;</p>&
86、lt;p> module fen4(a,b,q);</p><p><b> input b;</b></p><p><b> output a;</b></p><p> output[1:0] q;</p><p> reg[1:0]q;</p><p>
87、; always @(posedge b )</p><p><b> begin</b></p><p><b> q<=q+1;</b></p><p><b> end</b></p><p> assign a=(q==2'd3)?1:0;<
88、;/p><p><b> endmodule</b></p><p> 3)16分頻程序代碼;</p><p> module fen16(a,b,q);</p><p><b> input b;</b></p><p><b> output a;<
89、/b></p><p> output[3:0] q;</p><p> reg[3:0]q;</p><p> always @(posedge b )</p><p><b> begin</b></p><p><b> q<=q+1;</b>&l
90、t;/p><p><b> end</b></p><p> assign a=(q==4'd15)?1:0;</p><p><b> endmodule</b></p><p><b> 鬧時(shí)器程序代碼;</b></p><p> mo
91、dule nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);</p><p> output out;</p><p> input[3:0] m1,m2,h1,h2,tenh,tenm,oneh,onem;</p><p> input cin, clk1k;</p><p>
92、<b> reg out;</b></p><p> always @(m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) </p><p><b> begin</b></p><p> if(cin) out<=0;</p>
93、<p> else if(cin==0)</p><p><b> begin</b></p><p> if(tenh==h1&&oneh==h2&&tenm==m1&&onem==m2) out<=clk1k;</p><p><b> else</
94、b></p><p><b> out<=0;</b></p><p><b> end</b></p><p><b> end</b></p><p><b> endmodule</b></p><p>&
95、lt;b> 報(bào)時(shí)器程序代碼;</b></p><p> module baoshi(tenm,onem,tens,ones,q500,q1k,a,b);</p><p> input a,b;</p><p> input [3:0]tenm,onem,tens,ones;</p><p> output q50
96、0,q1k;</p><p> reg q500,q1k;</p><p> always @(tenm or onem or tens or ones)</p><p><b> begin</b></p><p> if ({tenm,onem}==8'h59&&{tens,ones}
97、==8'h50||{tenm,onem}==8'h59&&{tens,ones}==8'h52||</p><p> {tenm,onem}==8'h59&&{tens,ones}==8'h54||{tenm,onem}==8'h59&&{tens,ones}==8'h56||</p><
98、p> {tenm,onem}==8'h59&&{tens,ones}==8'h58)</p><p><b> q500<=a;</b></p><p> else q500<=0;</p><p><b> end</b></p><p>
99、 always @(tenm or onem or tens or ones)</p><p><b> begin</b></p><p> if ((tenm[3:0]==0000&&onem[3:0]==0000)&&(tens[3:0]==0000&&ones[3:0]==0000))</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 多功能數(shù)字鐘課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 多功能 數(shù)字鐘
- 課程設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)---多功能數(shù)字鐘的設(shè)計(jì)與制作
- 課程設(shè)計(jì)--多功能數(shù)字鐘的設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)--多功能數(shù)字鐘的電路設(shè)計(jì)
- 課程設(shè)計(jì)---多功能電子數(shù)字鐘
- eda課程設(shè)計(jì)——多功能數(shù)字鐘
- vhdl課程設(shè)計(jì)---多功能數(shù)字鐘
- 數(shù)字邏輯課程設(shè)計(jì)---多功能數(shù)字鐘
- 課程設(shè)計(jì)---多功能數(shù)字鐘的設(shè)計(jì)
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 多功能數(shù)字鐘電路課程設(shè)計(jì)
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 多功能數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--多功能電子數(shù)字鐘
- 課程設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì).doc
- 數(shù)字邏輯課程設(shè)計(jì)---多功能數(shù)字鐘 (2)
- 數(shù)字邏輯課程設(shè)計(jì)報(bào)告--多功能數(shù)字鐘
- 數(shù)字電路課程設(shè)計(jì)(多功能數(shù)字鐘)
評(píng)論
0/150
提交評(píng)論