3.1 接口模块interface
interface模块的主要功能是:向FPGA提供时钟;通过数据、地址总线和读写信号向FPGA读写并行数据;产生和处理中断信号。
在本例中,时钟是24.576MHz。时钟的频率越高,就可以处理更高速的数据信号,但相应的芯片功耗和价格要高一些。时钟频率还和HDLC的数据收发速率有关,一般选时钟频率正好是HDLC数据速率的整数倍,以便简化HDLC 收发器定时电路的设计。
数据总线的宽度取决于所使用的外部CPU类型。由于目前较多使用的是16位的单片处理器,因此这里采用16位的数据总线cpu_data[15..0]。当然也可以根据需要采用8位或32位的数据总线。
地址总线的宽度主要取决于HDLC所需要的数据缓存区的大小。例如,设计16路双向HDLC收发器,每个收发器要缓存256字节的数据,在使用16位数据总线时可求得地址总线的宽度至少应有12位。由于外部CPU要对FPGA实施一些控制功能,FPGA中还要考虑留出一定的地址来安排命令寄存器和状态寄存器,所以实际所需的地址总线还要再宽一些。如果HDLC的路数很多,缓存器又定得很大,FPGA内部的地址宽度会超过外部CPU可提供的地址宽度,这时可以向FPGA的特定寄存器写入数据锁存后作为内部地址来扩展地址总线。
对于外部CPU来说,FPGA可以看成是一个普通芯片,通过片选CS/、读写信号RD/和WR/,就可以选中FPGA并对其进行读写操作。
当FPGA需要向CPU传递信息时,中断信号输出端interrupt/ 变为低电平,CPU响应后可到FPGA中的状态寄存器去读取详细的中断信息并做出相应的处理。
3.2 HDLC数据发送模块transmitter
transmitter模块的主要功能是:对本路HDLC数据发送时钟tx_clk整形后产生内部发送时钟inter_tx_clk, 产生锁相于inter_tx_clk的FPGA工作时钟tx_op_clk;锁存外部CPU写入的发送数据并按指定时序启动发送;在发送数据段前加上"7E"起始标志;对发送数据逐位做CRC计算并将计算结果附在发送数据之后;对包括CRC计算值在内的数据进行"插零"操作并附上"7E"结束标志把结果输出。
transmitter模块由发送定时子模块tx_timer、发送数据子模块tx_data、标志发生器子模块7e_generator、发送CRC计算子模块tx_crc、数据插零子模块zero_insert等组成,见图3。
HDLC的数据发送时钟tx_clk由外部电路提供(在必要时也可把这些外部电路综合进同一片FPGA),工作时钟op_clk的频率比数据发送时钟高出几倍并锁相于数据发送时钟,能以高于比特发送的速度执行对数据的操作。
[此贴子已经被silverwolf7516于2003-11-12 10:53:15编辑过] |