FPGA使用入門實驗報告示例
FPGA使用入門實驗報告示例
一.實驗目的
(1) 掌握ISE 13.2整合開發環境和Modelsim軟體的使用方法;
(2) 熟悉S6 Card實驗板的.使用方法。
(3) 掌握使用Verilog HDL語言實現常用組合邏輯和時序邏輯的方
法。
(4) 瞭解Chipscope的功能與使用方法。
二. 實驗內容
(1) 熟悉S6 CARD實驗板;
(2) 熟悉ISE整合開發環境;
(3) 3位元加法器模擬與上板實驗
(4)m序列產生器模擬與在板Chipscope除錯。
三. 實驗過程依照指導書進行
四. 實驗程式碼分析
(1)3bit加法器(見註釋)
module m_seq_gen(
//埠I/O定義
input clk,//定義clk為輸入型別
input reset,//定義resert為輸入型別
output seq//定義seq為輸出型別
);
//內部訊號說明
reg [3:0] state;//定義變數state,為暫存器型,位寬為4
//功能定義
always @(posedge clk or negedge reset)//當clk上升沿來到或者reset下降沿來到,//觸發敏感事件,執行以下程式
begin
if(!reset)//如果不是reset下降沿來到
state <= 4'b1111;//state輸出結果為4位的二進位制數字1111
else
begin
state[3:1] <= state[2:0];//state從第二位到第四位輸出結果為其第一位//到第三位的數值
state[0] <= ^(state & 4'b1001);//state第一位輸出結果為state原來的//值與二進位制數1001相與的結果
end
end
assign seq = state[0]; //連續賦值,將state第一位值賦給seqEndmodule
(2)m序列測試檔案程式碼分析(見註釋)
module test_m;
// Inputs,將clk和reset定義為暫存器型別
reg clk;
reg reset;
// Outputs
wire seq;//將seq定義為連線型別
// Instantiate the Unit Under Test (UUT)
m_seq_gen uut (
.clk(clk),
.reset(reset),
.seq(seq)
);
initial begin
// Initialize Inputs,將初始值均設為0
clk = 0;
reset = 0;
// Wait 100 ns for global reset to finish
#100;
reset = 0;
#50 reset = 1;
// Add stimulus here
end
always #10 clk = ~clk;//產生測試時鐘,延時10s後使時鐘取反endmodule
五. 實驗模擬結果分析
1.3位元加法器(見註釋)
(1)功能模擬波形
由上圖可知加法器功能正常,且當a、b之和大於7時產生進位
(2)時序模擬波形
板子上撥碼開關的6、7、8和1、2、3分別作為加法器的輸入,D1-D4 LED燈分別表示cout和sum,撥動撥碼開關,觀察
LED
的變化。
實驗板實照
由上圖可證程式執行正常,3位元加法成功
2. m序列產生器
(1)產生原理:每一個週期內,第一個和第四個暫存器的值作異或
運算後,暫存器移位,運算出的值賦給第一個暫存器,構成新的系統暫存器狀態值。
(2)功能模擬波形
第一行為時鐘訊號,第二行為重置訊號,第三行為輸出的m序列。
(3)Chipscope波形