msk调制 vhdl_基于FPGA的MSK调制解调器的设计与仿真

论文编号:JD1172  论文字数:10913,页数:35  附任务书,开题报告,文献综述,外文翻译,中期检查

毕业设计说明书(论文)中文摘要

本文根据数字信号MSK调制和解调的工作原理,采用模块化设计了一种基于FPGA芯片的MSK调制解调器。在调制过程中,利用数控振荡器NCO完成对MSK信号的调制,得到连续的MSK调制信号。用差分解调法对调制信号进行解调,然后使用FIR数字滤波器完成滤波。使用VHDL语言进行了模块设计和时序仿真,仿真时,简单介绍了MSK信号调制与解调算法的Matlab仿真,重点介绍了MSK信号调制与解调的FPGA实现,然后用Modelsim仿真验证所设计的调制解调器是否正确。所设计的调制解调器具有体积小、功耗低、集成度高、软件可移植性强、抗干扰能力强的特点,符合目前通信技术设计的发展方向。

关键词  MSK信号  FPGA  VHDL  NCO  差分解调

毕业设计说明书(论文)外文摘要

Title          Design and Realization of an

MSK Modem Based on FPGA          _

Abstract

In this dissertation, we design a MSK modem based on FPGA adopting the method of module on the grounds of the principle of digital signal MSK modulation and demodulation. In the modulation process, we use the NCO on the MSK signal modulation to get the consecutive MSK signal, and differential demodulati

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,基于FPGAMSK调制解调器设计仿真的完整代码过于复杂,无法在此提供完整代码。但是,我可以为您提供一些编写MSK调制解调器的参考代码。请注意,以下代码仅供参考,需要根据具体情况进行调整和优化。 MSK调制器模块: ```vhdl library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity msk_modulator is port( clk: in std_logic; reset: in std_logic; data_in: in std_logic_vector(7 downto 0); fs: in integer; f1: in integer; f2: in integer; mod_out: out std_logic ); end msk_modulator; architecture rtl of msk_modulator is signal phase_acc: unsigned(31 downto 0); signal mod_data: std_logic; begin process(clk, reset) begin if reset = '1' then phase_acc <= (others => '0'); mod_data <= '0'; elsif rising_edge(clk) then phase_acc <= phase_acc + unsigned(to_signed(round((2**32) * (f1 + f2 * (2 * data_in - 255)) / fs), 32)); if mod_data = '0' then if phase_acc >= to_unsigned(2**31, 32) then mod_data <= '1'; end if; else if phase_acc >= to_unsigned(2**32 - 2**31, 32) then mod_data <= '0'; end if; end if; end if; end process; mod_out <= mod_data; end rtl; ``` MSK解调器模块: ```vhdl library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity msk_demodulator is port( clk: in std_logic; reset: in std_logic; mod_in: in std_logic; fs: in integer; f1: in integer; f2: in integer; data_out: out std_logic_vector(7 downto 0) ); end msk_demodulator; architecture rtl of msk_demodulator is signal phase_acc: unsigned(31 downto 0); signal demod_data: std_logic; begin process(clk, reset) begin if reset = '1' then phase_acc <= (others => '0'); demod_data <= '0'; elsif rising_edge(clk) then phase_acc <= phase_acc + unsigned(to_signed(round((2**32) * (f1 + f2 * (2 * unsigned(mod_in) - 1)) / fs), 32)); if demod_data = '0' then if phase_acc >= to_unsigned(2**31, 32) then demod_data <= '1'; end if; else if phase_acc >= to_unsigned(2**32 - 2**31, 32) then demod_data <= '0'; end if; end if; end if; end process; data_out <= std_logic_vector(unsigned(demod_data) * 255 / 2); end rtl; ``` 希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值