1. 程式人生 > 其它 >【FPGA】使用Verilog程式設計通過ModelSim實現2FSK調製解調模擬④(將7位陣列轉化為單位脈衝輸出)

【FPGA】使用Verilog程式設計通過ModelSim實現2FSK調製解調模擬④(將7位陣列轉化為單位脈衝輸出)

技術標籤: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