久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 28904|回復: 2
收起左側

Verilog七人表決器的設計課程設計實驗報告

[復制鏈接]
ID:252668 發表于 2017-11-23 14:40 | 顯示全部樓層 |閱讀模式
實驗四、七人表決器的設計實驗報告
一、實驗目的
1、初步了解Verilog語言。
2、學會用Verilog語言的行為描述方式來設計電路。
二、實驗原理
用七個開關作為表決器的7個輸入變量,輸入變量為邏輯“1”時表示表決者“贊同”;輸入變量為邏輯“0”時,表示表決者“不贊同”。輸出邏輯“1”時,表示表決“通過”;輸出邏輯“0”時,表示表決“不通過”。當表決器的七個輸入變量中有4個以上(含4個)為“1”時,則表決器輸出為“1”;否則為“0”。
七人表決器設計方案很多,比如用多個全加器采用組合電路實現。用VHDL語言設計七人表決器時,也有多種選擇。我們可以用結構描述的方式用多個全加器來實現電路,也可以用行為描述。采用行為描述時,可用一變量來表示選舉通過的總人數。當選舉人大于或等于4時為通過,綠燈亮;反之不通過時,黃燈亮。描述時,只須檢查每一個輸入的狀態(通過為“1”,不通過為“0”),并將這些狀態值相加,判斷狀態值和即可選擇輸出。
三、實驗內容
1、用Verilog語言設計七人表決器(VHDL程序代碼可附在實驗報告后面)。
2、下載并驗證結果。
四、實驗結果
1、畫出你設計的七人表決器的仿真波形圖。
<一>方案比較:
消抖方式:
  1. <font color="rgb(0, 0, 0)">always@(posedge clk or posedge rst)
  2. begin
  3.               if(rst)
  4.                             begin
  5.                             sum<=0;
  6.                             date_in<=0;
  7.                             end
  8.               else
  9.               begin
  10.                             if(in)
  11.                                           begin
  12.                                                         yl<=yl+1;
  13.                                                         if(js==5'b11111)                            //按鍵消抖
  14.                                                                       begin
  15.                                                                                     yl<=0;
  16.                                                                                     sum=0;
  17.                                                                                     date_in<=date_in | in;
  18.                                                                                     sum=0;
  19.                                                                                     for(i=0;i<7;i=i+1)
  20.                                                                                                   if(date_in[i])
  21.                                                                                                                 sum=sum+1;            
  22.                                                                       end
  23.                                           end
  24.                             end                 
  25. 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
結論:第一個消抖方法可以達到內外消抖,第二個就是一個很簡單的延時消抖,很容易理解。
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數相加,統計投票的人數,第二,利用for 循環來完成投票人數的統計。
<二>硬件測試
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的數相加來得到投票通過的人數
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
這段是片選兩個數碼管,一個數碼管用來顯示投票的人數,一個顯示大于等于四個人時用1表示通過,其他情況則為零。

<四>實驗流程圖
0.png

<五>七人表決器源程序
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為循環控制變量
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、簡單描述你設計的七人表決器下載到試驗箱上的結果。(手寫)
        片選了兩個數碼管,第一個數碼管當投票人數小于4的時候,顯示0。每撥下一個開關,第二個數碼管顯示的數字按照123順序遞增,當投票人數大于等于4的時候,第一個數碼管有0變成1,但是第二個數碼管現實的數字按照4567順序遞增。
五、實驗小結(手寫)
      通過這段時間的EDA實驗,我更加熟練地掌握了EDA開發的基本流程,熟練地使用Quartus ll軟件進行編程,在自己的努力下,完成了七人表決器的相關設計,感謝老師和同學給我的幫助。同時,我發現了自己的編程思路還不是很清晰,需要在以后的學習中加強鍛煉。此次實驗收獲很多,學會了延時消抖,對case語句的使用越來越熟練,這個程序雖然耗費了一些時間來寫,但是在這個反復修改的過程中,我學習到了一些新東西,在驗收實驗的過程中,也逐漸意識到對于語法規范性的重要性,以及編程過程中寫程序的格式的規范性。
評價項目
所得分數
報告完整正確
□3分    □2分    □1分   其它:    分
程序正確
□3分    □2分    □1分   其它:    分
結果正確
□4分    □3分    □2分   其它:    分
總分:                 分               
日期:      年   月   日  簽名:


完整的Word格式文檔51黑下載地址:
實驗四指導書七人表決器.doc (128.5 KB, 下載次數: 93)


評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:252668 發表于 2017-11-23 14:53 | 顯示全部樓層
哈哈,試試
回復

使用道具 舉報

ID:298081 發表于 2019-1-14 14:41 | 顯示全部樓層
謝謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色一级免费观看 | 91.xxx.高清在线| 欧美亚洲国产精品 | 精品综合久久久 | 亚洲欧美在线视频 | 韩国主播午夜大尺度福利 | 亚洲444kkkk在线观看最新 | 亚洲精品一区在线 | 国产一区二区精品在线观看 | 国产精品久久久久久久久久免费看 | 久久精选| 中文字幕视频在线 | www.99re| 一区二区三区精品 | 成人欧美一区二区三区在线播放 | 日本视频中文字幕 | 一区二区三区电影在线观看 | 成人av免费播放 | 欧洲视频一区二区 | 国产精品1区2区3区 一区中文字幕 | 91福利网| 国产区在线看 | 久久手机在线视频 | 国产精品第2页 | 亚洲视频一区二区三区 | 免费一区 | 中文字幕免费在线观看 | 在线观看成年视频 | 国产一级视频在线观看 | 日本人麻豆 | 中文字幕av亚洲精品一部二部 | 久久免费小视频 | 日韩欧美一区二区三区 | 一区二区三区福利视频 | 中文成人无字幕乱码精品 | 国产精品3区 | 久久久久欧美 | 黄色片在线观看网址 | 久久99精品视频 | 三级在线视频 | 天堂在线一区 |