在現在社會,報告的用途越來越大,要注意報告在寫作時具有一定的格式。那么什么樣的報告才是有效的呢?下面是小編給大家帶來的報告的范文模板,希望能夠幫到你喲!
eda課程設計報告篇一
學號:
班級:自動化 設計題目 多功能數字鐘電路設計 設計任務及要求 多功能數字鐘應該具有的功能有:顯示時—分—秒、小時和分鐘可調等基本功能。整個鐘表的工作應該是在1hz信號的作用下進行,這樣每來一個時鐘信號,秒增加1秒,當秒從59秒跳轉到00秒時,分鐘增加1分,同時當分鐘從59分跳轉到00分時,小時增加1小時,小時的范圍為0~23時。
在實驗中為了顯示的方便,由于分鐘和秒鐘顯示的范圍都是從0~59,所以可以用一個3位的二進制碼顯示十位,用一個四位的二進制碼(bcd碼)顯示個位,對于小時因為他的范圍是從0~23,所以可以用一個2位的二進制碼顯示十位,用一個4位的二進制碼(bcd碼)顯示個位。
實驗中由于七段碼管是掃描的方式 顯示,所以雖然時鐘需要的是1hz時鐘信號,但是掃描需要一個比較高頻率的信號,因此為了得到準確的1hz信號,必須對輸入的系統時鐘50mhz進行分頻。
調整時間的按鍵用按鍵模塊的s1和s2,s1調節小時,每按下一次,小時增加一個小時;
s2調整分鐘,每按下一次,分鐘增加一分鐘。另外用s8按鍵作為系統時鐘復位,復位后全部顯示00—00—00。
三.基于verilog hdl語言的電路設計、仿真與綜合(一)頂層模塊 本程序采用結構化設計方法,將其分為彼此獨立又有一定聯系的三個模塊,如圖1所示:
圖1:頂層結構框圖(二)子模塊 1.分頻器 分頻器的作用是對50mhz的系統時鐘信號進行分頻,得到頻率為1000hz的信號,作為顯示器的輸入信號。
源程序如下:
module fenpin(input cp, output cpout);reg cpout;reg [31:0] cout;reg cp_en;always @(posedge cp)//將50mhz分頻為1khz begin cout <=(cout == 32'd50000)? 32'd0 :(cout + 32'd1);cp_en <=(cout == 32'd50000)? 1'd1 : 1'd0;cpout <= cp_en;end endmodule 功能仿真波形如圖2所示(以五分頻為例):
2.控制器和計數器 控制器的作用是,調整小時和分鐘的值,并能實現清零功能。計數器的作用是實現分鐘和秒鐘滿60進1,小時則由23跳到00。當到達59分55秒的時候,led燈會閃爍來進行報時。因為控制器和計數器的驅動信號頻率均為1hz,故從分頻器輸出的信號進入控制器后,要進行二次分頻,由1khz變為1hz。
if(clk_en)begin if(r1==1)begin if(hour<24)hour=hour+1;if(hour==24)begin hour=0;end r1=0;end if(r2==1)begin if(minute<60)minute=minute+1;if(minute==60)begin minute=0;if(hour<24)hour=hour+1;if(hour==24)begin hour=0;end end r2=0;end if(second<60)second=second+1;if(second==60)begin second=0;if(minute<60)minute=minute+1;源程序如下:
module kongzhiqi(cpout,s1,s2,ret, hour,minute,second,led);input cpout,s1,s2,ret;output [5:0] hour;output [5:0] minute;output [5:0] second;output led;reg [5:0] hour;reg [5:0] minute;reg [5:0] second;reg r1;reg r2,r8,led;reg [10:0] cout;reg clk_en;always@(posedge cpout)begin if(s1==0)begin r1=1;end if(s2==0)begin r2=1;end if(ret==0)begin r8=1;end cout=(cout==32'd1000)?32'd0:(cout + 32'd1);clk_en=(cout==32'd1000)?1'd1:1'd0;led=1;end else led=0;if(r8==1)//清零 begin hour=0;minute=0;second=0;r8=0;end end end endmod if(minute==60)begin minute=0;if(hour<24)hour=hour+1;if(hour==24)begin hour=0;end end end if((minute==59)&&(second>55))begin if(led==1)led=0;else 功能仿真波形如圖3所示:
3.顯示器 顯示器的作用是將時—分—秒的值在數碼管上依次顯示出來。從分頻器輸出的1khz的信號作為數碼管的掃描信號。sel 表示三個數碼管選擇位,它的取值表示八個數碼管,從左至右依次是111~000。ledga表示七段數碼管,它的取值決定特定位數上顯示的數字。
源程序如下:
4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b100)led=7'b1000_000;if(sel==3'b011)case(shiwei2)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;module xianshi(cpout,hour,minute, second,sel,ledag);input cpout;input hour,minute,second;output sel,ledag;reg [2:0] sel;reg [6:0] led;reg [3:0] shi1,ge1,shi2,ge2,shi3,ge3;always @(posedge cpout)begin shiwei1=hour/10;gewei1=hour%10;shiwei2=minute/10;gewei2=minute%10;shiwei3=second/10;gewei3=second%10;if(sel==3'b110)case(shiwei1)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b101)case(gewei1)default: led = 7'b0000_000;endcase if(sel==3'b111)case(gewei3)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase sel = sel + 3'd1;end assign ledag=led;endmodule 4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b010)case(gewei2)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;default: led = 7'b0000_000;endcase if(sel==3'b001)led=7'b1000_000;if(sel==3'b000)case(shiwei3)4'b0000: led = 7'b0111_111;4'b0001: led = 7'b0000_110;4'b0010: led = 7'b1011_011;4'b0011: led = 7'b1001_111;4'b0100: led = 7'b1100_110;4'b0101: led = 7'b1101_101;4'b0110: led = 7'b1111_101;4'b0111: led = 7'b0000_111;4'b1000: led = 7'b1111_111;4'b1001: led = 7'b1101_111;總結體會 這次課程設計雖然只有短短的四天,但我的收獲卻很大。通過這次實習,我掌握了eda設計的基本流程(即設計輸入—編譯—調試—仿真—下載),領會了自頂而下結構化設計的優點,并具備了初步的eda程序設計能力。
我感覺,這個程序最難的地方在于頂層模塊的設計,因為頂層模塊需要將各個子模塊按照電路原理有機地結合起來,這需要扎實的理論功底,而這正是我所欠缺的。相比而言,子模塊的設計就容易多了,因為verilog語言和c語言有很多相似之處,只要明白了實驗原理,就不難完成,水平的高下只體現在程序的簡潔與否。verilog源程序的編寫很容易出現錯誤,這就需要耐心的調試。因為很多情況下,一長串的錯誤往往是由一個不經意的小錯誤引起的。當程序屢調屢錯的時候,最好和其他同學溝通交流一下,他們不經意的一句話,就可能給我啟發,使問題迎刃而解。
這次實習,給我感觸最深的還是行為態度問題。人的能力有大有小,但只要端正態度,不拋棄,不放棄,任何人都能取得令自己滿意的成績。在此,我由衷的感謝在這次課程設計中給了我巨大幫助的老師和同學們!
eda拔河游戲機課程設計報告
數字電子鐘邏輯電路設計《eda技術》課程設計報告
eda課程設計vhdl語言簡易出租車計費器設計
eda實驗
eda實驗模版