【FPGA】使用Verilog程式設計通過ModelSim實現2FSK調製解調模擬④(將7位陣列轉化為單位脈衝輸出)
阿新 • • 發佈:2020-12-07
技術標籤:DDSFPGAverilog調製與編碼策略fpga
【FPGA】Verilog編寫2FSK第④步將7位陣列轉化為單位脈衝輸出
- 在訊號連線的時候經常遇到輸入是陣列但是輸出要求單位脈衝訊號,結合前幾節訊號的調製和產生辦法,本節主要處理問題為:將7位陣列轉化為單位脈衝輸出。
-編寫轉化模組(詳解看註釋)
module trans(clk,canshu,MC);//定義模組名稱
input clk;//clk輸入時鐘
input [6:0]canshu;//canshu輸入的7位陣列
output MC;//MC輸出的單位脈衝
reg MC=0;//初始化輸出脈衝值
reg [10:0]i=11'b0;//初始化時鐘計數引數
reg [2:0] m=3'b000;//定義初始陣列地址位
[email protected](posedge clk)//時鐘上升沿觸發
begin
if(i==11'b11111111111)//設定輸出脈衝寬度這裡設定的1023個時鐘週期
begin i<=0; //將時鐘計數引數置0
case(m)//通過陣列地址位選擇輸出順序,這裡選擇從高位輸出即從左到右
3'b000:MC<=canshu[6];
3'b001:MC<=canshu[5];
3'b010:MC<=canshu[4];
3'b011:MC<=canshu[3];
3'b100:MC<=canshu[2];
3'b101:MC<= canshu[1];
3'b110:MC<=canshu[0];
endcase
if(m==3'b110)m<=3'b000 ;//如果地址位到達上限置0
else m<=m+3'b001; //將地址位加1
end
else i=i+1;//對時鐘計數引數加1
end
endmodule
- 編寫測試模組
注:這裡沒有編寫頂層模組,是因為本節只對陣列轉化進行討論,因此只有一個子模組,可將這個子模組設定為頂層,具體設定辦法在第②節中有講解。
`timescale 1ms/1ms//1m步進
module trans_tb;//定義tb模組名稱
reg clk;//定義時鐘
reg [6:0]canshu=7'b1101001; //給陣列賦值七位二進位制
wire MC;
trans trans
(
.clk(clk),
.canshu(canshu),
.MC(MC)
);
initial clk=1;
always #5 clk=~clk;//產生時鐘訊號
endmodule
- 新增測試檔案開始模擬,模擬結果如下
注:注意陣列輸出順序,是從高位到低位還是低位到高位。該模組為調製模組和M序列生成模組的連線模組。即可將M序列產生的多位資料進行單位輸出給調製模組進行調製。
【FPGA】使用Verilog程式設計通過ModelSim實現2FSK調製解調模擬①( MATLAB生成.mif檔案)
【FPGA】使用Verilog程式設計通過ModelSim實現2FSK調製解調模擬②(呼叫.mif生成2FSK載波波形——DDS)
【FPGA】使用Verilog程式設計通過ModelSim實現2FSK調製解調模擬③(訊號調製模擬)
將7位陣列轉化為單位脈衝輸出壓縮程式