设计报告--018 - 同步复接器 - 分接器的FPGA设计与实现

更新时间:2023-11-19 22:19:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

同步复接器/分接器的FPGA设计与实现

一. 复接器的设计

本设计采用了将复接器通过软件来实现,尽可能用软件来实现更多的硬件电路

[18~19]

。在FPGA设计中采用了分层设计,顶层为整个系统的原理框图(见图1),框图

中包含了构成同步数字复接器的主要模块,然后按各模块的功能分别进行设计[20]。

时钟 分频器 内码控制器 内码产生器 输出电路 内码产生器 内码产生器 内码产生器 时序发生器 图1 四路同步复接器的VHDL建模框图

图1的四路同步复接器框图由分频器、内码控制器、时序产生器、内码产生器、输出电路等模块组成[21~22]。分频器模块的作用是用来产生一个256KHZ的时钟信号,内码控制器模块的作用是通过三个地址控制端来控制内码发生器的码字依次输出,时序发生器模块的作用是产生四路时序来控制四路信号的输出,内码产生器模块的作用是将八路并行输入码通过串行输出,输出电路模块的作用是用一个三态门来控制四路信号分时输出,从而实现复接功能。复接器的VHDL设计根据所划分的几大模块分别用VHDL语言去描述,最后用元件调用语句和例化语句将它们连接起来。 1. 分频器

分频器实际是一个计数器,在本设计中,其作用是将由晶体震荡电路产生的4096KHZ的方波信号进行分频,其16分频(即256KHZ时钟)输出端作为内码控制器的控制输入端。其建模流程图如图2所示。

开始计数 时钟CLK输入

计数器计数 计数器清零 =15 图2 16分频计数器流程图

分频器的VHDL描述程序如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count16 is

port

(clk: in std_logic;

d,c,b,a: out std_logic);

end count16;

architecture rtl of count16 is

signal count_4:std_logic_vector(3 downto 0);

begin

process(clk) begin

if(clk'event and clk='1') then

if(count_4=\

count_4<=\ else

count_4<=count_4+1;

end if;

end if;

end process;

d<=count_4(0); c<=count_4(1);

b<=count_4(2); a<=count_4(3); end rtl;

上述程序在Max+plus II时序仿真波形如图3所示。

图3 分频器的时序仿真波形

图3中,a表示16分频输出,b表示8分频输出,c表示4分频输出,d表示2分频输出。由图中可以看出,实际仿真波形图与理论预期一致。 2. 内码控制器

内码控制器,实际也是一个分频器,一个输出端口输出三位并行信号作为内码产生器的地址控制端,另一输出端作为时序产生器的控制端。内码控制器对内码产生器的控制功能表如表3.1所示。

表3.1 内码控制器对内码产生器的控制功能表

内码控制器的3路输出信号(A2A1A0) A2 0 0 0 0 1 1 A1 0 0 1 1 0 0 A0 0 1 0 1 0 1 内码产生器输出信号位(Y0-Y7中选1) Y Y0 Y1 Y2 Y3 Y4 Y5 1 1 1 1 0 1 Y6 Y7 表3.1中的A2、A1、A0分别表示内码控制器内的二进制分频器的8、4、2分频信号。内码产生器应循环并依次输出从“000”、“001”、一直到“111”。这样,内码发生器每个时钟节拍,输出一位码,通过输出电路送到合路信道上,最终形成一路串行码流。

3. 时序产生器

时序产生器可产生脉宽为8个时钟周期的四路时序信号。具体实现是:将内码控制器的二分频端通过一个32分频器,其16分频和32分频输出端作为2/4译码器的控制端,2/4译码器的四个输出端,在经过反相器后,便得出本设计所要求的四路时序。译码器的建模流程图如图4所示。

输出=1110 输出=1101 输出=1011 输出=0111 F2&F1=00 F2&F1=01 F2&F1=10 F2&F1=11 分频器的两位输出F2&F1 图4 译码器的VHDL建模流程图

译码器的VHDL描述程序如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity yimaqi is

port

(f2,f1: in std_logic;

y3,y2,y1,y0 : out std_logic

);

end ;

architecture rtl of yimaqi is

signal indata:std_logic_vector(1 downto 0); signal y:std_logic_vector(3 downto 0); begin

indata<=f2&f1; process(indata)

begin

case indata is

when\ when\ when\ when\ when others=>y<=\ end case; end process; y3<=y(3); y2<=y(2); y1<=y(1); y0<=y(0); end architecture rtl;

其时序仿真波形如图5所示。

图5 2/4译码器的时序仿真波形图

图5中,f2表示分频器的32分频输出端,f1表示16分频输出端,y0为第1路译码输出,y1为第二路译码输出,y2为第3路译码输出,y3为第4路译码输出。

时序发生器的仿真波形及相位关系图如图6所示。

图6 时序发生器的仿真波形及相位关系图

图6为译码器输出经过一个反向器处理后得出的仿真结果,图中S0、S1、S2、S3分别为四路的时序输出,由图中可以看出四路时序刚好组成一个完整的时序,仿真结果与理论预期一致。 4. 内码产生器

四个内码产生器可生产四路独立的八位数码,并在内码控制器的控制下输出相应的数码,例如:C、B、A为三个地址控制端,Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0为八位码的输出,则二者的关系表3.2所示:

表2 3/8控制关系图

C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 输出 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 一个内码产生器的VHDL描述程序如下: library ieee;

use ieee.std_logic_1164.all; entity neimacs0 is

port

(in0_8,in0_7,in0_6,in0_5,in0_4,in0_3,in0_2,in0_1,k3,k2,k1,sx0: in std_logic;

out0: out std_logic); end entity neimacs0 ;

architecture nm0 of neimacs0 is component mux8_0 port

(d7,d6,d5,d4,d3,d2,d1,d0,d,c,b: in std_logic;

y

: out std_logic);

end component; component tri_gate0 port(din0,en: in std_logic; dout0:out std_logic); end component; signal l0: begin u1:mux8_0

port map

(d7=>in0_8,d6=>in0_7,d5=>in0_6,d4=>in0_5,d3=>in0_4,d2=>in0_3,d1=>in0_2,d0=>in0_1,d=>k3,b=>k2,c=>k1,y=>l0);

u2:tri_gate0 port map(din0=>l0,en=>sx0,dout0=>out0); end architecture nm0 ; library ieee;

use ieee.std_logic_1164.all; entity mux8_0 is

port(d7,d6,d5,d4,d3,d2,d1,d0:in std_logic;

d,c,b:in std_logic; y :out std_logic ); end mux8_0;

architecture rtl of mux8_0 is

signal sel:std_logic_vector(2 downto 0); begin

std_logic;

sel<=d&c&b; with sel select y<=d0 when \ d1 when \ d2 when \d3 when \ d4 when \ d5 when \ d6 when \ d7 when \ '0' when others; end rtl; library ieee;

use ieee.std_logic_1164.all; entity tri_gate0 is

port(din0,en:in std_logic;

dout0 :out std_logic); end tri_gate0 ;

architecture zas of tri_gate0 is begin

dout0<=din0 when en='1' else 'Z'; end zas;

内码产生器的仿真波形如图7所示

图7 内码产生器的仿真波形图

图7中k3、k2、k1表示计数器的3位输入控制端,in0_8到in0_1表示8位并行输入码,out0表示一路串行输出码,由图中可以看出实际仿真结果与理论一致。 5. 输出电路

在时序产生器产生的四路时序信号的控制下(时序与内码想与),按顺序依次将四路数码接入同一通道,形成了一路串行码,从而完成了四路数据码的复接。实现的关键是三态与门的利用,就是当时序信号的上升沿到来,并且在高电平持续时间内,相应的八位码以Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7的顺序依次输出,而在其他情况下,则以高阻的形态出现,当经过一个时序周期(即32个码元)后,就输出一帧串行码,从而实现了四路数据的同步复接。其中三态门的建模如图8所示。

N Y “en”=1 控制端“en”

输出高阻 输出输入信号

图8 三态门建模流程图

三态门的VHDL描述程序如下: library ieee;

use ieee.std_logic_1164.all; entity tri_gate0 is

port

(din0,en:in std_logic;

dout0 :out std_logic ); end tri_gate0 ;

architecture zas of tri_gate0 is begin

dout0<=din0 when en='1' else 'Z'; end zas;

三态门的时序仿真波形如图9所示。

图9 三态门的时序仿真波形图

图9中en表示使能信号,din0表示输入信号,dout0表示输出信号,由图中可以看出实际仿真结果与理论一致。 6. 四路同步复接器系统的时序仿真

当第一路分路码为“11001111”,第二路分路码为“00111100”,第三路分路码为“11110000”第四路分路码为“00001111”时,四路同步复接器的系统模块的时序仿真如图10所示。

图10 四路同步复接器系统的时序仿真图

图10中的s0、s1、s2、s3分别表示不同相位的四路时序信号,每路时序信号的高电平持续时间刚好包含了8个(clk)时钟周期,且在信号时序控制过程中,时序信号的高电平有效。在图11的波形示例中,第1、2、3、4路分路码在时间上分别对应第1、2、3、4路时序信号的高电平持续时间,从图中可以看出一帧复用信号的序列为“11001111001111001111000000001111”。其时序仿真可以说明,该复接器示例的建模与程序设计是正确的。

二. 分接器的设计

1. 帧同步信号移位和时序信号恢复模块

该模块表示帧同步信号移位和时序信号恢复电路。电路图如图11所示:

图11帧同步信号移位和时序信号恢复电路原理图

帧同步信号移位和时序信号恢复模块的时序波形仿真图如图12所示:

图12帧同步信号移位和时序信号恢复电路时序波形仿真图

第1路时序信号恢复电路和第1个8位移位寄存器如图12所示。图12中STEPIN表示帧同步信号输入;CLKIN表示时钟信号输入;DATAIN表示合路信号输入;DATAOUT表示串行合路信号输出;DATAOUT1表示帧同步信号移8位后的输出;DATAOUT2表示同步信号移16位后的输出;QOUT1表示第1路时序信号输出。移存器74164的QH表示移8位后的输出,QA表示移一位的输出。

第1路时序信号的恢复原理是:帧同步信号经过第1个移位寄存器后,从QA端和QH端分别输出延迟1位和延迟8位的帧同步信号,然后用QA端的帧同不脉冲的下降沿对D触发器置“1”,而用QH端的帧同步脉冲作为D触发的时钟。又因为帧同步脉冲的宽度为一个码元的宽度(即1个时钟周期),那么由上述的两个延迟帧同步信号控制一个D触发器,则可输出一路时序信号。依次类推,第2路时序信号是由延迟9位和延迟16位的帧同步信号分别经过反相器后,再分别加到一个D触发器的置1端和时钟输入端,从该D触发器的Q端输出。第3路时序信号是由延迟17位和延迟24位的帧同步信号分别经过反相器后,再分别加到一个D触发器的置1端和时钟输入端,从该D触发器的Q端输出。第4路时序信号是由延迟25位和延迟32位的帧同步信号分别经过反相器后,再分别加到一个D触发器的置1端和时钟输入端,从该D触发器的Q端输出。

在这个模块里的主要芯片是74164,其内部结构如图13所示:

图13 芯片74164原理图

74164芯片有4个输入端和8个输出端,A、B输入端作为第1个D触发器的电平输入端,CLK作为D触发器的时钟,QA是经过1个时钟延迟的的AB相与的输出,QB是经过2个时钟延迟的的AB相与的输出,依次类推,QH是经过8个时钟延迟的AN相与的输出。 2. 串/并变换模块

把串行合路信号变换成并行信号的电路原理图如图14所示:

图14 串/并变换模块原理图

图14中器件74374位8位D触发器;端子CLKIN表示外时钟输入;DATAIN接来图13中的DATAOUT(串行合路)信号;BN的接法根据具体情况而定,当与图13中延迟8位的帧同步信号“DATAOUT1”时,则并行输出为1路支路信号;当与图13中延迟16位的帧同步信号“DATAOUT2”时,则并行输出为2路支路信号;当与图13中延迟24位的帧同步信号“DATAOUT3”时,则并行输出为3路支路信号;当与图13中延迟32位的帧同步信号“DATAOUT4”时,则并行输出为4路支路信号。该串/并变换器具有串并变换状态和状态保持两个功能。

串/并变换模块的时序波形仿真图如图15所示:DATAIN一直输入“1”,OUT8~OUT1全部输出“1”。符合串/并变换模块功能。

图15 串/并变换模块的时序波形仿真图

在这个模块里的主要芯片是74374,其内部结构如图16所示:

在串/并的模块里的第1个74374的功能是将串行合路信号接入D8端,经过一个D触发器的时钟延迟后,在用Q8作为输入信号接到D7端,同样经过一个D触发器的时钟延迟后,在用Q7作为输入信号接到D6端;这样经过8个D触发器的始终延迟后,原本串行合路的第1位信号就从Q1输出,而原本串信号的第8位信号则从Q8输出。串行合路信号变换成并行信号后,在经过第2个74374锁存输出后,这样8位并行信号就成为同步信号。

图16 芯片74374原理图

3. 分路器模块

分路器模块由四个子模块构成,如图17所示。每个子模块对应一路支路信号分路电路。

图17 分路器模块原理图

图17中的BCEN表示并/串变换器的并行数据输入与串行移位控制信号,接帧同步信号;DATAIN接串行复用信号;CLKIN接时钟信号;CBEN1至CBEN4分别接四路不同延迟的时序信号;FENOUT1表示第1路串行支路信号输出;FENOUT2表示第2路串行支路信号输出;FENOUT3表示第3路串行支路信号输出;FENOUT4表示第4路串行支路信号输出。

分路器模块的时序波形仿真图如图18所示:由图中可知,在CBEN1~CBEN4分别有时钟输入的情况下,FENOUT1~ FENOUT4分别输出各自的信号。

图18 分路器模块的时序波形仿真图

图19中的每个子模块分为三个部分,即串/并变换器、分频器和并/串变换器。每个子模块的由串/并变换器、分频器和并/串变换器组成,如图20所示。串/并变换器的功能是,将接收到的串行复用信号按复用信号的时钟,进行串并变换,并进行状态锁存。

图20 分路器子模块原理图

并/串变换器的具体电路如图21所示。并/串变换器时钟速率是复用信号对应

的时钟速率的四分之一(用分频器74161实现),以保证将复用器帧结构中的一个时隙扩展为一帧的宽度。由图16可知,该串/并变换器还包括状态锁存功能,因此并/串变换器可利用串/并变换器中的状态锁存,以低速时钟对并/串变换器的移位寄存器进行数据的低速移位。该并/串变换器包括两个工作过程,首先完成并行数据的写入功能,在BCEN=“0”期间进行;然后完成数据串行移位功能,在BCEN=“1”期间进行。

并/串变换器在BCEN=“0”时,数据从串/并输入到并/串变换器中,由D触发器实现数据锁存功能,将送过来的数据一一对应的D触发器上;在BCEN=“1”时且CLK时钟有效的情况下,OUTPUT依次输出D8~D1,D1经过8个D触发器的延迟,所以在最后一位输出。

图21 并/串变换器的原理图

并/串变换器的时序仿真图如图22所示:图中并路信号输入“10101010”,串路信号输出“1,0,1,0,1,0,1,0”符合并/串变换器的功能。

图22 并/串变换器的时序仿真图

4. 顶层模块

在帧同步信号移位和时序信号恢复模块,串/并变换模块,分路器模块三大模块都通过仿真后,就可以构建起顶层模块。顶层模块的原理图如图23所示:

图23 顶层模块的原理图

5. 四路同步分接器系统的时序仿真

图24为四路同步分接器的时序仿真波形。图中,STEPIN为帧同步信号输入;DATAIN为串路复用信号输入;CLKIN为时钟输入;DATAOUT是串行复用信号输出;FENOUT1是第1路支路信号输出;FENOUT2是第2路支路信号输出;FENOUT3是第3路支路信号输出;FENOUT4是第4路支路信号输出。图中的串行复用信号为“11110010111100001100110010101010”(一帧),第1路支路信号在一帧内为“11110010”;第2路支路信号在一帧内为“11110000”;第3路支路信号在一帧内为“11001100”;第4路支路信号在一帧内为“10101010”;从而实现了正确分接。

图24 四路同步分接器的时序仿真波形

本文来源:https://www.bwwdw.com/article/7wov.html

Top