|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MFSK调制系统设计和VHDL程序及仿真
( y2 T0 m9 i1 J. g4 Y3 m
# r* G4 O8 D) G% a1 Z. n: s2 ?. q' S* Y9 b' A$ L
功能:基于VHDL硬件描述语言,完成对基带信号的MFSK调制
! {! ^3 _1 Q$ x/ g6 ?--说明:这里MFSK的M为4
0 [7 q, c3 z& U2 S3 q! f# `1 I2 _library ieee;+ W- N# A; @( C$ z2 S. `
use ieee.std_logic_arith.all;- ]; p% x/ C( E5 b6 a. u
use ieee.std_logic_1164.all;
* w5 I$ a3 L7 b* I, q, f7 n6 Juse ieee.std_logic_unsigned.all;
; b: f, G. A+ q) V/ T. `# D- Pentity PL_MFSK is0 }- ]/ N, N+ H' o
port(clk&nBSP; :in std_logic; --系统时钟% @7 @% m! P# z' _" j9 k
start :in std_logic; --开始调制信号# s3 k. O3 O& ^- k2 W: U/ Q3 {
x :in std_logic; --基带信号
3 ~2 @- W9 L! ~! b% X8 |; k" J: e y ut std_logic); --调制信号% J& q1 x" ]; ~6 u8 w
end PL_MFSK;# T3 Z8 R9 B1 b1 T4 u' f
architecture behav of PL_MFSK is+ u* L4 i8 [ H, U( O+ ~/ l; ?# g
signal q :integer range 0 to 15; --计数器; h$ S3 ^6 q/ E+ G
signal f :std_logic_vector(3 downto0); --分频器* g6 y6 u) j' L) m3 p
signal xx:std_logic_vector(1 downto0); --寄存输入信号x的2位寄存器% `# K: S; i' C
signal yy:std_logic_vector(1 downto0); --寄存xx信号的寄存器
/ o/ t) s* V0 s ~/ r7 E5 Ibegin
' p8 `0 _5 L' Jprocess(clk) --此进程过对clk进行分频,得到4种载波信号f3、f2、f1、f0。+ w/ m v) _% ]' W( b! C& q) k
begin
+ d( F; s: K- }) O% O7 Tif clk'event and clk='1' then
5 o+ F, K1 H" S. e ifstart='0' then f<="0000";3 ]" }( A5 z+ @4 Y4 d% g& j5 I
elsiff="1111" then f<="0000";* `0 l! z: r2 r, O! M' L
else f<=f+1;! c% X) A% U' [. g0 o# P. J
end if;+ z' O" ?) p! {4 Z( m
end if;
8 H# e; k4 ^# g) J7 ?9 uend process;; ]5 k1 U# m" G2 c6 R
process(clk) --对输入的基带信号x进行串/并转换,得到2位并行信号的yy
7 ~3 Q! P9 T: M- }begin
8 v5 K9 t4 Q: C" o \* lif clk'event and clk='1' then: n1 c) }& g4 i5 D
ifstart='0' then q<=0;
7 E- S0 b4 d! L4 L/ I$ { elsif q=0 then q<=1;xx(1)<=x;yy<=xx;5 J& `; g" f: ^6 V/ U, J7 U
elsif q=8 then q<=9;xx(0)<=x;/ Y5 ?7 K* _; N# T! o, t
else q<=q+1;
, W' |. o( T' w: y5 k! `) P end if;8 T) S m/ ^8 y z) V/ ]
end if;. \3 c$ c$ R3 d8 ?( ~& f
end process;4 e8 w& n/ |7 C; `3 G
process(clk,yy) --此进程完成对输入基带信号x的MFSK调制! @, ^( [3 Y, y
begin* N2 j' A4 b) [* Y
if clk'event and clk='1' then
7 t' o* m' O2 `" s6 |- n2 ^7 q ifstart='0' then y<='0'; -- if语句完成2位码并行码到4种载波的选通
1 l# e8 r! P; R4 z elsif yy="00" then y<=not f(3);
; Y" `8 ?' Q5 B: f elsif yy="01" then y<=not f(2);
0 n% m3 g; s9 X, Q5 z) e; G5 n elsif yy="10" then y<=not f(1);9 v: P3 P1 B! V+ O9 I% \! O `
else y<=not f(0);- {. _5 ]$ _; z j- P5 Z" f$ \1 e
end if;0 n* A8 F/ ?! K2 P; ?; y
end if;' g' M3 j+ e1 ?8 v
end process;$ ?9 U5 s! \5 N5 X
end behav;; V& u- K5 W$ U! f0 K
|
|