名稱:2FSK調制解調器Verilog代碼Quartus仿真
軟件:Quartus
語言:Verilog
代碼功能:
2FSK調制解調器:
1、設計實現2FSK調制功能,2FSK調制波形通過DA芯片輸出,在示波器觀察波形。
2、將DA芯片輸出的模擬信號再接回板子上的AD芯片的輸入端。
3、AD芯片將模擬信號數字化后,再對2FSK波形進行解調,能正確解調出原信號。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設計文檔:
1.工程文件
2.程序代碼
3.程序運行
4.程序仿真
2FSK調制仿真
圖中最后兩行分別為調制信號和2FSK調制以后的波形
2FSK解調仿真
圖中最后兩行分別為輸入的2FSK調制波形和解調以后的波形,可以看到解調信號相對2FSK調制波形有延遲
下圖中從上到下依次為調制信號,2FSK調制波形,解調信號,可以看到解調信號相對原始調制信號有延遲
附:管腳約束
set_location_assignment PIN_11 -to clk50
set_location_assignment PIN_B8 -to rst_n
set_location_assignment PIN_W6 -to DAC_CLK
set_location_assignment PIN_V5 -to DAC_PD
set_location_assignment PIN_AA2 -to ADC_CLK
set_location_assignment PIN_AB2 -to ADC_PD
set_location_assignment PIN_W7 -to DAC_DAT[0]
set_location_assignment PIN_V7 -to DAC_DAT[1]
set_location_assignment PIN_W8 -to DAC_DAT[2]
set_location_assignment PIN_V8 -to DAC_DAT[3]
set_location_assignment PIN_W9 -to DAC_DAT[4]
set_location_assignment PIN_V9 -to DAC_DAT[5]
set_location_assignment PIN_W10 -to DAC_DAT[6]
set_location_assignment PIN_V10 -to DAC_DAT[7]
set_location_assignment PIN_Y3 -to ADC_DAT[0]
set_location_assignment PIN_AB3 -to ADC_DAT[1]
set_location_assignment PIN_Y4 -to ADC_DAT[2]
set_location_assignment PIN_AA5 -to ADC_DAT[3]
set_location_assignment PIN_Y5 -to ADC_DAT[4]
set_location_assignment PIN_AA6 -to ADC_DAT[5]
set_location_assignment PIN_Y6 -to ADC_DAT[6]
set_location_assignment PIN_AA7 -to ADC_DAT[7]
部分代碼展示:
`timescale?1ns?/?1ps? //////////////////////////////////////////////////////////////////////////////////? //?Module?Name:?FSK //////////////////////////////////////////////////////////////////////////////////? module?FSK(? ?clk50,?//50M時鐘-P11 ?rst_n,?//Key0?按下低電平-B8 ? ?DAC_CLK, ?DAC_DAT, ?DAC_PD, ? ?ADC_CLK, ?ADC_DAT, ?ADC_PD ?);? input?clk50; input?rst_n; //======================================================= //?DAC? //======================================================= output?DAC_CLK; output?[7:0]?DAC_DAT; output?DAC_PD; //======================================================= //?ADC? //======================================================= output?ADC_CLK; input?[7:0]?ADC_DAT; output?ADC_PD; wire?modulation_signal; wire?demodulation_signal; reg?[7:0]?ADC_DAT_REG;//AD后數據 reg?clk25; assign?DAC_CLK?=?clk50; assign?ADC_CLK?=?clk25; assign?DAC_PD?=?0; assign?ADC_PD?=?0;? reg?[8:0]?Cont;?//定義一個計數器,用于?SIN?的地址 ////Cont?持續(xù)計數 always@(posedge?clk50?) begin ?clk25?<=?~clk25; end always?@(posedge?clk50) begin ?ADC_DAT_REG?<=?ADC_DAT; end FSK_modulation?FSK2_modulation( .?clk(clk50),//50M時鐘-P11 .?modulation_signal(modulation_signal),//調制信號 .?data(DAC_DAT)//輸出調制波形路 ); FSK_demodulation?FSK2_demodulation( .?clk(clk50),//50M時鐘-P11 .?demodulation_signal(demodulation_signal),//解調信號 //.?data(DAC_DAT)//仿真時用該句,屏蔽下面那句 .?data(ADC_DAT_REG)//輸入調制波形仿真時用DAC_DAT將數據還回到解調模塊,下載板子驗證時使用ADC_DAT_REG );
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=555