• 方案介紹
    • 一、設(shè)計(jì)說(shuō)明
    • 二、設(shè)計(jì)要求
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于直接數(shù)字頻率合成技術(shù)的BPSK調(diào)制verilog代碼

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1-230924222404392.doc

共1個(gè)文件

名稱: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

6. 仿真圖

  • 1-230924222404392.doc
    下載

相關(guān)推薦