📄 bertest.h
字号:
//DS2172 寄存器地址定义,来源于DS2172英文手册表2
// 寄存器名 地址 可读/写情况
#define PSR3 0X00 //模板设置寄存器3 R/W
#define PSR2 0X01 //模板设置寄存器2 R/W
#define PSR1 0X02 //模板设置寄存器1 R/W
#define PSR0 0X03 //模板设置寄存器0 R/W
#define PLR 0X04 //模板长度寄存器 R/W
#define PTR 0X05 //多项式寄存器 R/W
#define PCR 0X06 //模板控制寄存器 R/W
#define EIR 0X07 //错码插入寄存器 R/W
#define BCR3 0X08 //位计数器寄存器3 R
#define BCR2 0X09 //位计数器寄存器2 R
#define BCR1 0X0A //位计数器寄存器1 R
#define BCR0 0X0B //位计数器寄存器0 R
#define BECR3 0X0C //位错误计数器寄存器3 R
#define BECR2 0X0D //位错误计数器寄存器2 R
#define BECR1 0X0E //位错误计数器寄存器1 R
#define BECR0 0X0F //位错误计数器寄存器0 R
#define PRR3 0X10 //模板接收寄存器3 R
#define PRR2 0X11 //模板接收寄存器2 R
#define PRR1 0X12 //模板接收寄存器1 R
#define PRR0 0X13 //模板接收寄存器0 R
#define SR 0X14 //状态寄存器 R
#define IMR 0X15 //中断标记寄存器 R/W
#define TR 0X1C //测试寄存器 R/W
#define LCDNUM 10
#define LCDDB ( 0xFF<<LCDNUM ) // P0.10~P0.17 定义为LCD的数据输入端
#define LCDCS ( 1<<28 ) // P0.28 定义为LCD的数据选通
#define LCDA0 ( 1<<29 ) // P0.29 定义为LCD命令和数据选通端
#define LCDBACKLIGHT ( 1<<25 ) // P1.25 定义为LCD背光控制
#define LCDWR ( 1<<2 ) // P0.2 定义为LCD屏的数据写信号
#define LCDRD ( 1<<3 ) // P0.3 定义为LCD屏的数据读信号
#define FPGA_RESET ( 1<<18 ) // P1.18 控制FPGA复位,高电平有效
#define MPU_TEST ( 1<<19 ) // P1.19 输出方波,以测试MPU是否写入成功
#define BERNUM 10
#define BERDB ( 0xFF<<BERNUM ) // P0.10~P0.17 定义为LCD的数据输入端
#define BERCS ( 1<<24 ) // P1.24 定义为BER的数据选通
#define BERWR ( 1<<2 ) // P0.2 定义为BER的数据写信号
#define BERRD ( 1<<3 ) // P0.3 定义为BER的数据读信号
#define BERALE ( 1<<17 ) // P1.17 定义为BER的ALE
#define BERTL ( 1<<21 ) // P1.21 定义为BER的TL
#define BERRL ( 1<<22 ) // P1.22 定义为BER的RL
#define BERLC ( 1<<23 ) // P1.23 定义为BER的LC
#define BERINT ( 1<<30 ) // P0.30 定义为BER的INT/
#define PPG_TYPE_No 20
typedef struct
{
unsigned char PP_LENGTH;//伪随机模板长度的阶,实际长度为(2**PP_LENGTH)-1;
unsigned char PTR_V; //多项式寄存器的取值
unsigned char PLR_V; //模板长度寄存器的取值
unsigned char TINV_V; //发送数据倒置选择
unsigned char RINV_V; //接收数据倒置选择
}PPG; //pseudorandom pattern generation 伪随机模板产生,来源于 ds2172英文手册Talbe 4;
//使用伪随机模板时,PSR3~PSR0的值均为0xff;
//伪随机模板寄存器设置表
const PPG PPG_TABLE[PPG_TYPE_No]=
{
0x03,0x00,0x02,0x00,0x00,
0x04,0x00,0x03,0x00,0x00,
0x05,0x01,0x04,0x00,0x00,
0x06,0x04,0x05,0x00,0x00,
0x07,0x00,0x06,0x00,0x00,
0x09,0x04,0x08,0x00,0x00,
0x0A,0x02,0x09,0x00,0x00,
0x0B,0x08,0x0A,0x00,0x00,
0x0F,0x0D,0x0E,0x01,0x01,
0x11,0x02,0x10,0x00,0x00,
0x12,0x06,0x11,0x00,0x00,
0x14,0x02,0x13,0x00,0x00,
0x15,0x01,0x14,0x00,0x00,
0x16,0x00,0x15,0x00,0x00,
0x17,0x11,0x16,0x01,0x01,
0x19,0x02,0x18,0x00,0x00,
0x1C,0x02,0x1B,0x00,0x00,
0x1D,0x01,0x1C,0x00,0x00,
0x1F,0x02,0x1E,0x00,0x00,
0x20,0x10,0x1F,0x00,0x00
};
#define RPG_TYPE_No 10
typedef struct
{
unsigned char RP_TYPE; //重复模板类型,取值为Table 5的行位置
unsigned char PTR_V; //多项式寄存器的取值
unsigned char PLR_V; //模板长度寄存器的取值
unsigned char PSR3_V; //模板设置寄存器3的取值
unsigned char PSR2_V; //模板设置寄存器2的取值
unsigned char PSR1_V; //模板设置寄存器1的取值
unsigned char PSR0_V; //模板设置寄存器0的取值
}RPG; //repetitive pattern generation 重复模板产生,来源于 ds2172英文手册Talbe 5;
//使用重复模板时,TINV,RINV的值均为0;
//重复模板寄存器设置表
const RPG RPG_TABLE[RPG_TYPE_No]=
{
0x01,0x00,0x00,0xff,0xff,0xff,0xff,
0x02,0x00,0x00,0xff,0xff,0xff,0xfe,
0x03,0x00,0x01,0xff,0xff,0xff,0xfe,
0x04,0x00,0x03,0xff,0xff,0xff,0xfc,
0x05,0x00,0x17,0xff,0x20,0x00,0x22,
0x06,0x00,0x0f,0xff,0xff,0x00,0x01,
0x07,0x00,0x07,0xff,0xff,0xff,0x01,
0x08,0x00,0x03,0xff,0xff,0xff,0xf1,
0x09,0x00,0x04,0xff,0xff,0xff,0xf0,
0x0a,0x00,0x02,0xff,0xff,0xff,0xfc
};
#define BitNum 0
#define ErrNum 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -