代码下载:https://download.youkuaiyun.com/download/xvrixingkong/10968192
一、系统功能描述:
实现如下图所示的直接序列扩频通信系统。
信源——不断发送简单的四一零码,即反复发送“11110”
扰码——用伪随机对数据比特进行扰码,可利用移位寄存器产生扰码序列,扰码序列的生成多项式为 ,移位寄存器的初始状态为“100101010000000”。扰码模块的结构框图如下图所示。
交织——采用简单的块交织,交织深度为64,交织器为8行8列,横向读入,纵向读出,可采用双RAM结构实现(即两个RAM,一个读,一个写,并交替读写),也可只采用一块RAM实现(自己思考方法,可加分)。以交织深度为16的块交织为例,输入数据比特的序号为1-16,写入的顺序为1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16,读出的顺序为1、5、9、13、2、6、10、14、3、7、11、15、4、8、12、16。
直扩——将数据比特与伪随机序列相乘,扩频比为63(即伪码速率为数据率的63倍),扩频序列为1+X+X6和1+X+ X2+ X5+ X6构成的Gold序列
BPSK——比特‘0’对应为符号“01111111”,‘1’对应为“10000000”
解调——BPSK解调,将符号对应为比特
相关——将接收数据与扩频序列相乘,并判决为‘0’或‘1’
解交织——交织的逆操作(实现方法与交织器相同)
解扰——扰码的逆操作(实线方法与扰码器相同)
附加功能:
在BPSK调制和解调之间加入噪声模块,检验直接序列扩频系统的抗干扰能力。
二、功能描述:
1、分频模块——Odiv_freq
功能描述:用于时钟分频,可以实现任意奇数分频。
输入输出解释:
端口名称 | 信号模式 | 信号类型 | 信号说明 |
---|---|---|---|
num_div | generic | integer | 分频数 |
clk | IN | std_logic | 时钟 |
reset | IN | std_logic | 复位信号 |
div_clk | OUT | std_logic | 分频输出 |
2、信源模块——Source
功能描述:生成连续的四一零码数据 “11110”。
输入输出解释:
端口名称 | 信号模式 | 信号类型 | 信号说明 |
---|---|---|---|
clk | IN | std_logic | 时钟 |
reset | IN | std_logic | 复位信号 |
dout | OUT | std_logic | 信号输出 |
3、扰码模块——Scrambling
功能描述:用伪随机码对数据比特进行扰码。
输入输出解释:
端口名称 | 信号模式 | 信号类型 | 信号说明 |
---|---|---|---|
clk | IN | std_logic | 时钟 |
reset | IN | std_logic | 复位信号 |
en | IN | std_logic | 使能信号 |
idata | IN | std_logic | 输入信号 |
odata | OUT | std_logic | 输出信号 |
o_valid | OUT | std_logic | 输出有效信号 |
4、交织模块——Interweave
功能描述:对数据码进行交织,采用简单的块交织,交织深度为64,交织器8行8列,横向读入纵向读出。
输入输出解释:
端口名称 | 信号模式 | 信号类型 | 信号说明 |
---|---|---|---|
clk | IN | std_logic | 时钟 |
reset | IN | std_logic | 复位信号 |
idata | IN | std_logic | 输入信号 |