標題: Verilog七人表決器的設計課程設計實驗報告 [打印本頁]
作者: xzy20141994 時間: 2017-11-23 14:40
標題: Verilog七人表決器的設計課程設計實驗報告
實驗四、七人表決器的設計實驗報告一、實驗目的
1、初步了解Verilog語言。
2、學會用Verilog語言的行為描述方式來設計電路。
二、實驗原理
用七個開關作為表決器的7個輸入變量,輸入變量為邏輯“1”時表示表決者“贊同”;輸入變量為邏輯“0”時,表示表決者“不贊同”。輸出邏輯“1”時,表示表決“通過”;輸出邏輯“0”時,表示表決“不通過”。當表決器的七個輸入變量中有4個以上(含4個)為“1”時,則表決器輸出為“1”;否則為“0”。
七人表決器設計方案很多,比如用多個全加器采用組合電路實現(xiàn)。用VHDL語言設計七人表決器時,也有多種選擇。我們可以用結構描述的方式用多個全加器來實現(xiàn)電路,也可以用行為描述。采用行為描述時,可用一變量來表示選舉通過的總人數(shù)。當選舉人大于或等于4時為通過,綠燈亮;反之不通過時,黃燈亮。描述時,只須檢查每一個輸入的狀態(tài)(通過為“1”,不通過為“0”),并將這些狀態(tài)值相加,判斷狀態(tài)值和即可選擇輸出。
三、實驗內(nèi)容
1、用Verilog語言設計七人表決器(VHDL程序代碼可附在實驗報告后面)。
2、下載并驗證結果。
四、實驗結果
1、畫出你設計的七人表決器的仿真波形圖。
<一>方案比較:
消抖方式:
- <font color="rgb(0, 0, 0)">always@(posedge clk or posedge rst)
- begin
- if(rst)
- begin
- sum<=0;
- date_in<=0;
- end
- else
- begin
- if(in)
- begin
- yl<=yl+1;
- if(js==5'b11111) //按鍵消抖
- begin
- yl<=0;
- sum=0;
- date_in<=date_in | in;
- sum=0;
- for(i=0;i<7;i=i+1)
- if(date_in[i])
- sum=sum+1;
- end
- end
- end
- end</font>
復制代碼
延時消抖:
always@(posedge clk or posedge rst)
begin
if(rst)
cnt<=20'd0;
else if(vote)
cnt<=20'd0;
else
begin
cnt<=cnt+1'b1;
end
end
結論:第一個消抖方法可以達到內(nèi)外消抖,第二個就是一個很簡單的延時消抖,很容易理解。
always@(vote or rst)
begin
if(rst)
begin
sum<=0;
end
else
sum<=vote[6]+vote[5]+vote[4]+vote[3]+vote[2]+vote[1]+vote[0];
end
結論:第一7bit數(shù)相加,統(tǒng)計投票的人數(shù),第二,利用for 循環(huán)來完成投票人數(shù)的統(tǒng)計。
<二>硬件測試
2.1管腳約束
Out:pin-127 show:pin-133
Pin-126 pin-135
Pin-125 pin-136
Din:pin-32 pin-137
Pin-33 pin-138
Pin-34 pin-141
Pin-38 pin-142
Pin-39 pin-128
Pin-42
Pin-43
Pin-44
2.2 quarters ll操作平臺以及試驗箱
<三>軟件測試
always@(vote or rst)
begin
if(rst)
begin
sum<=0;
end
else
sum<=vote[6]+vote[5]+vote[4]+vote[3]+vote[2]+vote[1]+vote[0];
end
end
這段是利用7bit的數(shù)相加來得到投票通過的人數(shù)
always@(posedge clk or posedge rst)
begin
if(rst)
cnt<=20'd0;
else if(vote)
cnt<=20'd0;
else
begin
cnt<=cnt+1'b1;
end
end
這段是利用延時消抖
always@(posedge clk or posedge rst)
begin
if(rst)
begin
out<=3'b111;
count<=0;
end
else
begin
case(count)
0 :
begin
out<=3'b110;
case (sum[2:0])
3'b000:show <= 8'b11111100;
3'b001:show <= 8'b01100000;
3'b010:show <= 8'b11011010;
3'b011:show <= 8'b11110010;
3'b100:show <= 8'b01100110;
3'b101:show <= 8'b10110110;
3'b110:show <= 8'b10111110;
3'b111:show <= 8'b11100000;
endcase
count<=count+1;
end
1 :
begin
out<=3'b111;
if(sum>=4)
show<=8'b01100000;
else
show<=8'b11111100;
count<=count+1;
end
endcase
end
end
endmodule
這段是片選兩個數(shù)碼管,一個數(shù)碼管用來顯示投票的人數(shù),一個顯示大于等于四個人時用1表示通過,其他情況則為零。
<四>實驗流程圖
0.png (7.38 KB, 下載次數(shù): 91)
下載附件
2017-11-23 20:30 上傳
<五>七人表決器源程序
module test4(vote,show,out,rst,clk);
input rst,clk;
output reg [2:0]out;
output reg[7:0]show;
input [6:0] vote;
reg[19:0] cnt;
reg [2:0]sum;
reg count;
integeri;//定義整型變量i為循環(huán)控制變量
always@(vote or rst)
begin
if(rst)
begin
sum<=0;
end
else
sum<=vote[6]+vote[5]+vote[4]+vote[3]+vote[2]+vote[1]+vote[0];
end
always@(posedge clk or posedge rst)
begin
if(rst)
cnt<=20'd0;
else if(vote)
cnt<=20'd0;
else
begin
cnt<=cnt+1'b1;
end
end
always@(posedge clk or posedge rst)
begin
if(rst)
begin
out<=3'b111;
count<=0;
end
else
begin
case(count)
0 :
begin
out<=3'b110;
case (sum[2:0])
3'b000:show <= 8'b11111100;
3'b001:show <= 8'b01100000;
3'b010:show <= 8'b11011010;
3'b011:show <= 8'b11110010;
3'b100:show <= 8'b01100110;
3'b101:show <= 8'b10110110;
3'b110:show <= 8'b10111110;
3'b111:show <= 8'b11100000;
endcase
count<=count+1;
end
1 :
begin
out<=3'b111;
if(sum>=4)
show<=8'b01100000;
else
show<=8'b11111100;
count<=count+1;
end
endcase
end
end
endmodule
2、簡單描述你設計的七人表決器下載到試驗箱上的結果。(手寫)
片選了兩個數(shù)碼管,第一個數(shù)碼管當投票人數(shù)小于4的時候,顯示0。每撥下一個開關,第二個數(shù)碼管顯示的數(shù)字按照123順序遞增,當投票人數(shù)大于等于4的時候,第一個數(shù)碼管有0變成1,但是第二個數(shù)碼管現(xiàn)實的數(shù)字按照4567順序遞增。
五、實驗小結(手寫)
通過這段時間的EDA實驗,我更加熟練地掌握了EDA開發(fā)的基本流程,熟練地使用Quartus ll軟件進行編程,在自己的努力下,完成了七人表決器的相關設計,感謝老師和同學給我的幫助。同時,我發(fā)現(xiàn)了自己的編程思路還不是很清晰,需要在以后的學習中加強鍛煉。此次實驗收獲很多,學會了延時消抖,對case語句的使用越來越熟練,這個程序雖然耗費了一些時間來寫,但是在這個反復修改的過程中,我學習到了一些新東西,在驗收實驗的過程中,也逐漸意識到對于語法規(guī)范性的重要性,以及編程過程中寫程序的格式的規(guī)范性。
完整的Word格式文檔51黑下載地址:
實驗四指導書七人表決器.doc
(128.5 KB, 下載次數(shù): 93)
2017-11-23 14:39 上傳
點擊文件名下載附件
eda課程設計
下載積分: 黑幣 -5
作者: xzy20141994 時間: 2017-11-23 14:53
哈哈,試試
作者: 婧小婧 時間: 2019-1-14 14:41
謝謝樓主
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |