基于FPGA的三人表决器设计
Verilog HDL語言
Verilog HDL 是一種硬件描述語言(HDL:Hardware Description Language),以文本形式來描述數字系統硬件的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示數字邏輯系統所完成的邏輯功能。
任務描述
運用所學的組合邏輯電路的知識完成三人表決器的設計,實現少數服從多數的表決規則,并進行驗證測試。熟悉 Verilog HDL 文本設計流程,掌握組合邏輯電路的設計仿真和硬件測試的方法。最后完善一個三人表決器電路的功能描述風格 Verilog HDL 代碼。
題目來源
舉重比賽有三名裁判,當運動員將杠鈴舉起后,須有兩名或兩名以上裁判認可,方可判
定試舉成功,若用 A、B、C 分別代表三名裁判的意見輸入,同意為 1,否定為 0;F 為裁判
結果輸出,試舉成功時 F=1,試舉失敗時 F=0。
實驗原理
在三人表決電路中,當表決某個提案時,多數人同意,則提案通過;反之,不通過。
假設 key_1,key_2,key_3 為三個裁判。同意用 1 表示,不同意用 0 表示;輸出 LED0 為 1
的時候提案通過;反之,不通過。
1、真值表
A_in B_in C_in F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
2、邏輯表達式
F=B_inC_in+A_inC_in+A_inB_in+A_inB_inC_in)
3、邏輯電路圖
4、用 Verilog 語言寫出該邏輯表達式
F=(B_in&&C_in)||(A_in&&C_in)||(A_in&&B_in)||(A_in&&B_in&&C_in);
在 verilog 語言中,&&代表邏輯與;||代表邏輯或
5、新建工程,將工程名命為:sanrenbiaojue
6、右擊,選擇 New Source
7、選擇 Verilog Module,并命名為 biaojue
8、編寫代碼
9、運行該程序,檢查 RTL 電路
雙擊放大如下:
10、新建仿真文件
先點擊 Simulation
右擊,選擇 New Source
選擇 Verilog Test Fixture,命名為:sanrenbiaojue
編寫仿真代碼
寫完代碼,雙擊 Simulate Behavioral Model
得到如下仿真波形圖:
根據上面的波形圖我們可以知道,
在 0-100ns 之間,A_in=0,B_in=0,C_in=0,F=0;
在 100ns 時,A_in=0,B_in=0,C_in=1,F=0;
在 120ns 時,A_in=0,B_in=1,C_in=0,F=0;
在 140ns 時,A_in=0,B_in=1,C_in=1,F=1;
在 160ns 時,A_in=1,B_in=0,C_in=0,F=0;
在 180ns 時,A_in=1,B_in=0,C_in=1,F=1;
在 200ns 時,A_in=1,B_in=1,C_in=0,F=1;
在 220ns 時,A_in=1,B_in=1,C_in=1,F=1;
在 220ns 之后一直保持 A_in=1,B_in=1,C_in=1,F=1
換言之,F 只有在 A_in,B_in,C_in,中有兩個及兩個以上的高電平時輸出高電平;否
則,F 輸出為低電平。
11、進行引腳標注
選擇上方工具欄里面的 Tools,接下來點擊 PlanAhead,然后選擇第一個,如下圖所示:
進入如下界面后,點擊紅色箭頭所指的圖標
在 Site 內輸入相對應的引腳位置:
根據下表輸入:
引腳名 引腳位置
A_in L5
B_in M3
C_in L4
F P6
12、下載到開發板,進行實物實驗
首先將開發板與電腦連接,再進行如下步驟
雙擊 Generate Programming File ,如果顯示為綠色的勾勾
雙擊 Configure Target Device
點擊 OK
雙擊 Boundary Scan
在白色區域內,右擊,選擇 Add Xilinx Device
找到相對應的.bit 文件,打開
右擊上述圖片紅色箭頭指示的位置,選擇 Program
六、實驗結論
通過本次實驗,我熟悉了 ISE 軟件的基本操作,掌握了使用 Verilog HDL 描述電路功能
的編寫,學習組合邏輯電路的設計仿真和測試,熟悉了 EDA 實驗的基本流程。
七、實驗相關代碼及代碼解釋
module biaojue(
//變量名
A_in,
B_in,
C_in,
F
);
//定義輸入輸出變量
input A_in;
input B_in;
input C_in;
output F;//在這里將 F 默認定義為 wire 類型
assign F=(A_in&&B_in)||(A_in&&C_in)||(B_in&&C_in)||(A_in&&B_in&&C_in);//對
wire 類型變量 F 賦值用 assign 語句
endmodule
仿真測試代碼:
module biaojueqi;
// Inputs
reg A_in;
reg B_in;
reg C_in;
// Outputs
wire F;
// Instantiate the Unit Under Test (UUT)
biaojue uut (
.A_in(A_in),
.B_in(B_in),
.C_in(C_in),
.F(F)
);
initial begin
// Initialize Inputs
A_in = 0;
B_in = 0;
C_in = 0;
// Wait 100 ns for global reset to finish
#100;
A_in = 1;
B_in = 0;
C_in = 0;
#20
A_in = 1;
B_in = 1;
C_in = 0;
#20
A_in = 0;
B_in = 1;
C_in = 0;
#20
A_in = 0;
B_in = 1;
C_in = 1;
// Add stimulus here
#20
A_in = 1;
B_in = 1;
C_in = 1;
#20
A_in = 0;
B_in = 0;
C_in = 1;
end
endmodule
總結
以上是生活随笔為你收集整理的基于FPGA的三人表决器设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive sql正则表达式总结
- 下一篇: arcgis面填充图案_如何将CAD里的