(1)帧编码器的VHDL语言设计
帧编码器包括一个长为256的计数器和一个四状态的单热点状态机,用以产生同步帧和数据帧。部分代码如下:
PROCESS(RESET,CLK) //产生长256的计数器
IF RESET=‘1‘THEN COUNT<=0;
ELSIF CLK‘EVENT AND CLK=‘1‘ THEN COUNT<=(COUNT+1)MOD 256;
END PROCESS;
TC<=‘1‘WHEN COUNT=255 ELSE ‘0‘;
TYPE STATE_TYPE IS(IDLE,PACK1,PACK2,TRANSMIT);
SIGANL SREG:SETAT_TYPE;
RPOCESS(CLK,RESET) //状态机进程
IF CLK‘EVENT AND CLK=‘1‘THEN
IF RESET=1 TEHE SREG<=IDLE ELSE
CASE SREG IS
WHEN IDLE=>
IF SEND_UD=‘1‘THEN SREG<=TRANSMIT; //空闲状态如有发送命令,即转入发送状态
ELSE SREG<=PACK1; //否则,发送填充字1
WHEN PACK1=>
(后略)
(2)串化器的原理设计
串化器由多级嵌套的子图和若干宏模块组成,原理图的顶层图如图4所示。四个四位并入串出寄存器将16位并行数据拆分为四组串行数据,其中的奇数位和偶数位分别通过一个双数据速率寄存器,得到两个差分信号,同时用另一个双数据速率寄存器产生与之同步的差分时钟。其中,双数据速率寄存器为时序敏感器件,其内部主要部分都加入了时序特性限制,如最大时滞(maxdelay)、最大抖动(maxskew),并用FMAP控件强制性地把相关信号放入同一个函数产生器中。