基于FPGA状态机和片上总线的CompactPCI异步串口板设计方案
(1)双口SDRAM
本文引用地址:https://www.eepw.com.cn/article/248894.htm采用IDT7132芯片作为数据缓冲区,容量2k×8bit,读写周期均为20ns。为了避免上位机正在更新某数据区,而与该数据区对应的异步串口要求发送该数据区的情况,在设计中将双口SDRAM的存储空间分为两部分,即上位机可写访问的一级缓冲区和WB总线处理逻辑可写访问的二级缓冲区。对应36通路,一级和二级缓冲区均分成了72个子区,每路异步串口对应着一级缓冲区内的一对发送子区和接收子区,以及二级缓冲区内的一对发送子区和接收子区。上位机可读写一级发送子区,但只能读一级接收子区;WB总线处理逻辑只能读一级发送子区,可读写一级接收子区和二级所有子区。
(2)FPGA芯片
FPGA芯片为串口板核心器件,选用XC3S2000-4 FG456芯片,I/O口速度达到5ns。
①WB片内总线
即WISHBONE片内总线,是一种应用普遍的、具有灵活性的IP核互联接口。
②异步收发器
异步收发器为IP软核,来源于opencores开源组织,支持WISHBONE接口,与通用异步收发器兼容,每个可实现一路全双工异步串口通讯。
③双口SDRAM总线接口逻辑
片内有两个独立的双口SDRAM总线接口逻辑,分别实现了双口SDRAM与WISHBONE总线和LOCAL总线的逻辑连接。
④LOCAL总线寄存器区
为了方便上位机对各异步串口独立灵活配置、全面监控工作状态,必须设置可供上位机访问的若干配置寄存器和状态寄存器, 而且LOCAL总线寄存器区逻辑是上位机与片内WB总线处理逻辑之间的通讯桥梁。
⑤地址译码逻辑
片内有两个独立的地址译码逻辑,分别根据LOCAL总线地址和WISHBONE总线地址,片选总线从逻辑。
⑥串口接收滤波逻辑
片内36个独立的串口接收滤波逻辑,每个对应一路异步收发器的接收端,可滤除正负跳变宽度小于1ms的毛刺,但会造成1ms的信号延迟。
⑦WB总线处理逻辑
即WISHBONE总线状态机,实现了访问WISHBONE总线、数据处理、数据存储和各串口通讯协议的功能。主要任务是根据上位机设置的LOCAL总线配置寄存器区,设置各异步收发器的工作模式,接收串口数据,遵循通讯协议,发送串口数据,完成一级、二级缓冲区数据更新或复制,并将各串口通道的工作状态标识到LOCAL总线状态寄存器区,供上位机查询。
2.2.2 处理流程
如果上位机请求更新一级缓冲区的某子区,上位机查询“FPGA访问双口SDRAM一级缓冲区标志”,若为真,则等待;否则置位“上位机访问双口SDRAM一级缓冲区标志”,更新一级缓冲区的发送子区,完毕后复位“上位机访问双口SDRAM一级缓冲区标志”,产生“更新二级缓冲区的中断请求”。WB总线处理逻辑响应该中断,查询“上位机访问双口SDRAM一级缓冲区标志”,若为真,则等待;否则置位“FPGA访问双口SDRAM一级缓冲区标志”,读访问一级缓冲区的相应发送子区,并存入二级缓冲区的相应发送子区,完毕后复位“FPGA访问双口SDRAM一级缓冲区标志”。在WB总线处理逻辑更新二级缓冲区期间,暂不响应异步串口交易中断。
如果某异步收发器存在接收发送任务,即串口交易中断请求存在,WB总线处理逻辑读访问该异步收发器的中断状态寄存器,如果是发送中断,继续发送下一字节,并退出,循环直至发送帧结束;如果是接收中断,读访问接收数据寄存器,并将数据存入二级缓冲区对应接收子区。每接收一个字节后,延迟半位,未出现新的接收数据中断,则认为已收到完整数据帧。随后设置“二级缓冲区接收子区覆盖一级缓冲区接收子区”中断请求。如果上位机未访问一级缓冲区,则WB总线处理逻辑响应上述中断,执行二级至一级的某接收子区“数据复制”,任务结束后,清相应中断;如果上位机正在访问一级缓冲区,则等待时机再复制数据。
fpga相关文章:fpga是什么
评论