GMSK解调的VHDL语言怎么写?

如题所述

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all; --库和程序包调用

entity GMSK is --实体定义,实体名GMSK

port --各个端口定义

(clk:in std_logic; --clk端口,in方向,标准逻辑位类型

data:out std_logic; --data端口,out方向,标准逻辑位类型

A3:out std_logic;

A4:out std_logic;

A5:out std_logic;

A6:out std_logic;

A7:out std_logic;

A8:out std_logic;

A9:out std_logic;

A10:out std_logic;

A11:out std_logic;

A12:out std_logic

);

end GMSK;

architecture address of GMSK is --结构体定义,结构体名address

--以下为结构体的用到的信号、数据类型等的声明

signal count_4:integer range 0 to 1; - -信号count_4定义,范围为0到1的整数

signal clk_2:std_logic; - -信号clk_2定义,标准逻辑位

signal clk_4:std_logic;

signal b1,b2,b3,b4,b5,b6:std_logic;

signal add_count:integer range 0 to 3;

signal m:std_logic_vector(6 downto 0); - -信号m定义,7位的标准逻辑位矢量

begin --结构体开始

process(clk) - -进程定义,敏感信号为clk

begin

if(clk'event and clk='1') then --如果clk事件发生并且clk=‘1’执行下述表达式

m<=(m(5 downto 0)&(m(4) xor m(0) xor(not(m(6)or m(5)or m(4)or m(3)or m(2)or m(1)or m(0)))));

-- m(6)和m(5)、m(4)、m(3)、m(2)、m(1)、m(0)相或,其所得值的非和m(4)、m(0)相异或,异或后的值和6位的m信号相与,最后把所得值赋值给m。生成一共7位的m序列

clk_2<=not clk_2; -- clk_2的非信号赋值给clk_2,实现二分频

if(count_4=1) then - -如果count_4=1,则执行下述表达式,实现四分频

clk_4<=not clk_4; count_4<=0; -- 把clk_4的非赋值给clk_4,再把‘0’赋值给count_4

else

count_4<=count_4+1; - -条件count_4=1不成立时,执行count_4+1的值赋值给count_4

end if; --结束if语句

b1<=m(0); --以下为赋值语句,实现移位赋值功能,把m的6位和b的6位相对应

b2<=b1;

b3<=b2;

b4<=b3;

b5<=b4;

b6<=b5;

if(b6='1') then --当b6='1' 时

add_count<=add_count+1; -- 把add_count+1赋值给add_count,加1功能

else

add_count<=add_count-1; --当b6='1'不成立'时,add_count-1赋值给add_count,减1功能

end if;

case add_count is - -case语句,象限数决定A6、A7

when 0=>A6<='0';A7<='0'; - -当add_count为0时,执行A6<='0';A7<='0'

when 1=>A6<='1';A7<='0'; - -当add_count为1时,执行A6<='1';A7<='0'

when 2=>A6<='0';A7<='1'; - -当add_count为2时,执行A6<='0';A7<='1'

when 3=>A6<='1';A7<='1'; - -当add_count为3时,执行A6<='1';A7<='1'

end case;

end if;

end process;

- -以下为结构体的功能描述部分

data<=b3; - -把b3赋值给data

A3<=clk_4; - -把4分频信号clk_4赋值给A3

A4<=clk_2; - -把2分频信号clk_2赋值给A4

A5<=clk; - -把时钟信号clk赋值给A5

A8<=b1;

A9<=b2;

A10<=b3;

A11<=b4;

A12<=b5;

end address; - -结束结构体address
温馨提示:答案为网友推荐,仅供参考
相似回答