名稱:BPSK調(diào)制verilog(代碼在文末付費(fèi)下載)
軟件:Quartus
語(yǔ)言:Verilog
要求:
一、設(shè)計(jì)說(shuō)明
BPSK調(diào)制廣泛應(yīng)用于衛(wèi)星通信、移動(dòng)通信等領(lǐng)域。本題目要求設(shè)計(jì)一個(gè)基于直接數(shù)字頻率合成技術(shù)的BPSK調(diào)制器的FPGA IP核,實(shí)現(xiàn)對(duì)輸入周期數(shù)字比特流的BPSK調(diào)制。
二、設(shè)計(jì)要求
1.?輸入數(shù)字比特流波形和輸出BPSK調(diào)制波形必須能夠通過(guò)示波器或在ModelSim中觀測(cè)到。
2.?調(diào)制器輸入數(shù)字比特流的速率不低于10kbps。
3.?使用ALTERA公司的FPGA器件進(jìn)行開(kāi)發(fā)。
4.?可根據(jù)情況增加其他功能。
演示視頻:
部分代碼展示
`timescale?1ns?/?1ps //要求輸入的數(shù)字比特流通過(guò)外面的8個(gè)開(kāi)關(guān)循環(huán)8bit,按不低于10K的速率串行發(fā)這個(gè)數(shù)據(jù). //按鍵可以切換幾個(gè)不同的載波頻率(正弦波) //輸出頻率f=clk_50M*frequency/2^10 module?DDS_top( ????input?clk_50M, ?input?rst_n,//復(fù)位 ?input?freq_key_in,//frequency控制按鍵 ?input?[7:0]?data_in,//調(diào)制信號(hào),8bit ?output?[7:0]?BPSK_wave//BPSK波形輸出 ????); wire?[9:0]?addra; wire?[9:0]?addra_cos; assign?addra_cos=addra+512; //wire?[7:0]?douta_fangbo; wire?[7:0]?douta_sin; wire?[7:0]?douta_cos; wire?[7:0]?frequency;//頻率控制字,控制輸出波形頻率,值越大,頻率越大 wire?[15:0]?wave;//BPSK調(diào)制后波形 wire?freq_key; wire?data_o; //按鍵消抖 key_jitter?i_key_jitter( .?clkin(clk_50M), .?key_in(freq_key_in),//輸入 .?key_negedge(freq_key)//消抖后按鍵下降沿 ); //頻率控制 fre_sel?i_fre_sel( .?clk(clk_50M), .?key(freq_key), .?frequency(frequency)///頻率控制字,控制輸出波形頻率,值越大,頻率越大 ); //sin波ROM sin_ROM?i_sin_ROM?( ??.clock(clk_50M),????//?input?wire?clka ??.address(addra),??//?input?wire?[9?:?0]?addra ??.q(douta_sin)??//?output?wire?[7?:?0]?douta ); sin_ROM?i_cos_ROM?( ??.clock(clk_50M),????//?input?wire?clka ??.address(addra_cos),??//?input?wire?[9?:?0]?addra ??.q(douta_cos)??//?output?wire?[7?:?0]?douta ); //頻率累加器 Frequency_ctrl?i_Frequency_ctrl( .?clk_50M(clk_50M), .?rst_n(rst_n?&?freq_key_in), .?frequency(frequency),//頻率控制字 .?addra(addra)//輸出地址 ????); ? //調(diào)試信號(hào)輸出 //輸入的數(shù)字比特流通過(guò)外面的8個(gè)開(kāi)關(guān)循環(huán)8bit,按不低于10K的速率串行發(fā)這個(gè)數(shù)據(jù). data_read?i_data_read( .?clk_50M(clk_50M), .?rst_n(rst_n?&?freq_key_in),//復(fù)位 .?data_in(data_in),//調(diào)制信號(hào),8bit .?data_o(data_o)//串行輸出信號(hào) ); //調(diào)制模塊 data_bpsk?i_data_bpsk( .?clk_50M(clk_50M), .?rst_n(rst_n?&?freq_key_in),//復(fù)位 .?data_o(data_o),//調(diào)制信號(hào) .?douta_sin(douta_sin),//sin .?douta_cos(douta_cos),//cos .?BPSK_wave(BPSK_wave)//BPSK波形輸出 );
設(shè)計(jì)文檔(文檔點(diǎn)擊可下載):
本要求設(shè)計(jì)一個(gè)基于直接數(shù)字頻率合成技術(shù)的BPSK調(diào)制器的FPGA IP核,實(shí)現(xiàn)對(duì)輸入周期數(shù)字比特流的BPSK調(diào)制,其中調(diào)制器輸入數(shù)字比特流的速率不低于10kbps。
首先需要產(chǎn)生調(diào)制信號(hào),調(diào)制信號(hào)使用外部8位撥碼開(kāi)關(guān)控制,設(shè)計(jì)一個(gè)并轉(zhuǎn)串模塊將8位并行信號(hào)轉(zhuǎn)換為串行輸出信號(hào),信號(hào)比特流的速率不低于10kbps。然后需要設(shè)計(jì)載波信號(hào),載波采用正弦波,使用ROM存儲(chǔ)一個(gè)1024點(diǎn)的正弦波信號(hào)和余弦信號(hào),同時(shí)為了使載波頻率可調(diào),通過(guò)一個(gè)按鍵控制ROM的讀速率即可控制載波頻率。最后設(shè)計(jì)調(diào)制模塊,通過(guò)調(diào)制信號(hào)控制當(dāng)前輸出是正弦波還是余弦波,從而達(dá)到BPSK調(diào)制的目的。
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. Testbench