一种总线接口式网卡芯片控制系统的制作方法

未命名 07-20 阅读:130 评论:0


1.本发明属于集成电路应用领域,具体涉及一种总线接口式网卡芯片控制系统。


背景技术:

2.网卡芯片,又称网络接口控制器(network interface controller)芯片,是一类集成了tcp/ip协议栈、tcp卸载引擎、以太网mac和phy的专用集成电路,广泛应用于家庭网络设备、安防设备、嵌入式服务器等场景。总线接口式网卡芯片,是使用地址和数据总线与主cpu进行通信的网卡芯片,从图1中可以看出,网卡芯片的addr[9:0]和data[15:0]分别是10位宽度的地址总线引脚和16位宽度的数据总线引脚,/cs、/wr、/rd分别表示低电平有效的片选引脚、写使能引脚、读使能引脚。图2和图3分别是网卡芯片的读操作时序图和写操作时序图。表1和表2分别表示网卡芯片的读操作时序限制和写操作时序限制。
[0003]
microblaze是vivado提供的能在fpga上运行的软处理器核,通过与其他ip(如apb总线桥)组合搭建功能电路,在此基础上,在vitis中使用c程序编程即可实现对外围设备的控制。
[0004]
amba标准是arm提出的专用于高性能嵌入式处理器的通信标准,按速度由高到低,可划分为ahb、asb、apb。apb总线可以降低功耗、减少外围设备接口的复杂性,因此适合于带宽要求不高、无需流水总线接口的外设。其中,基于amba3标准的apb3协议主要包括如下信号:
[0005]
(1)pclk:apb总线时钟信号,上升沿采样。
[0006]
(2)presetn:apb总线复位信号,低电平有效。
[0007]
(3)paddr:apb总线地址,32位宽度。
[0008]
(4)psel:apb从设备片选信号,高电平有效。
[0009]
(5)penable:apb使能信号,高电平有效。
[0010]
(6)pwrite:apb读写控制信号,高电平执行写操作,低电平执行读操作。
[0011]
(7).pwdata:apb写数据总线信号,32位宽度。
[0012]
(8)ready:准备好信号,高电平有效。
[0013]
(9)prdata:apb读数据总线信号,32位宽度。
[0014]
在传统的设计中,因vivado中的ip集成器仅提供同步类型的apb桥接器,因而apb的时钟频率与处理器microblaze的主频总是保持相同。而外设的网卡芯片的读写操作时序制约了apb的速度,例如,从表1可知,一次完整的写操作至少需要93ns。为了使得在penable为高电平的两个时钟周期内完成写操作,设计apb时钟频率为10mhz(周期是100ns,可满足一次完整的网卡写操作),如此处理器microblaze的速度会降低为10mhz,严重制约了microblaze的性能的发挥。


技术实现要素:

[0015]
本发明的目的在于提供一种总线接口式网卡芯片控制系统,克服传统设计中的外
设时序限制对apb时钟频率(也即microblaze主频)造成的制约,解除二者之间的耦合,进而提高cpu的主频及效率。
[0016]
为实现上述目的,本发明通过下述技术方案实现:
[0017]
一种总线接口式网卡芯片控制系统,包括作为主控的fpga和被控的网卡芯片,所述fpga包括软处理器核、apb总线模块以及接口模块,其中,软处理器核作为cpu,apb总线模块通过axi总线与软处理器核相连并受软处理器核控制;接口模块用于保证apb总线模块在网卡芯片的时序约束下实现对网卡芯片寄存器的读写操作。
[0018]
进一步地,fpga采用4字节对齐,软处理器核为microblaze;apb总线模块的协议版本是基于amba3标准的apb3,其中:
[0019]
pclk频率与microblaze的主频保持相同;
[0020]
apb的32位总线地址paddr中仅使用其低12位,其中paddr[1:0]为保留位,用于四字节对齐,此外,使用paddr[11:2]的数据传给网卡芯片的地址总线addr[9:0];
[0021]
apb的32位写数据总线信号pwdata中仅使用其低16位,用于向网卡芯片的数据总线data[15:0]传送数据;
[0022]
apb的32位读数据总线信号prdata中仅使用其低16位,用于从网卡芯片的data[15:0]读取数据。
[0023]
进一步地,当fpga的cpu发起写操作时,apb总线模块的psel和pwrite置为高电平,paddr上输出寄存器的物理地址;经过一个pclk周期,penable跳变为高电平,pready为高电平时,数据pwdata[15:0]传输给网卡芯片的data[15:0],data[15:0]的数据会在网卡芯片的采样时间内写入到地址为addr[9:0]的寄存器中;
[0024]
当fpga的cpu发起读操作时,apb总线模块的psel置为高电平,pwrite置为低电平,paddr上输出寄存器的物理地址;为了从速度较慢的data[15:0]中采样获得正确的数值并传输到apb总线模块的prdata[15:0],使用含有等待的读方式,即,当psel置为高电平一个pclk周期后,penable跳变为高电平时,先把pready信号拉低,直到网卡芯片的data[15:0]上的数据准备好后,才把pready信号拉高,并把data[15:0]的数据赋给prdata[15:0],此时完成读操作。
[0025]
进一步地,cpu每执行完一次写操作或读操作后,均延迟一段时间,等待网卡芯片完成操作,再执行下一次操作。
[0026]
进一步地,接口模块采用独热码定义7个状态,状态转移过程如下:
[0027]
s0:空闲态;此状态下,当psel为高电平时,说明apb总线模块有读或写请求,状态转移到s1;
[0028]
s1:开始态;此状态下,若pwrite为高电平,说明apb总线模块是写请求,将/cs和/wr两个引脚拉低;否则,说明apb总线模块是读请求,将/cs和/rd两个引脚拉低;
[0029]
s2:建立时间等待态;此状态下,若/wr为低,则等待t1时间后,跳转到s3;若/rd为低,则等待t2时间后,跳转到s3;
[0030]
s3:数据采样态;此状态下,若/wr为低,将fetch信号置为高,此时cpu将pwdata[15:0]赋值给data[15:0],跳转到s4;若/rd为低,从data[15:0]上读取数据到prdata[15:0],跳转到s4;
[0031]
s4:片选时间等待态;此状态下,若/wr为低,则等待t3时间后,跳转到s5;若/rd为
低,则等待t4时间后,跳转到s5;
[0032]
s5:完成态;此状态下,将/wr、/rd、/cs全部拉高,跳转到s6;
[0033]
s6:片选间隔等待态;此状态下,等待t5时间后,跳转到s0。
[0034]
本发明与现有技术相比,具有以下有益效果:
[0035]
(1)本发明通过fpga实现对网卡芯片的控制,能够克服外设时序限制对apb时钟频率造成的制约,解除二者之间的耦合,进而提高cpu的主频及效率。
[0036]
(2)通过设计的有限状态机,把网卡芯片的读写时序给apb带来的限制与cpu的主频解除耦合,使cpu的速度得以提升。
[0037]
(3)通过在底层寄存器操作api中插入等待函数这一软硬件结合的方式,降低了跨时钟域数据处理的复杂度,简单明确,易于扩展应用到类似的总线接口式芯片的控制方案。
附图说明
[0038]
图1是一种总线接口式网卡芯片控制系统的整体结构示意图。
[0039]
图2是网卡芯片读操作时序图。
[0040]
图3是网卡芯片写操作时序图。
[0041]
图4是fpga的模块结构示意图。
[0042]
图5是接口模块的状态转移图。
具体实施方式
[0043]
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
[0044]
一种总线接口式网卡芯片控制系统,包括作为主控的fpga和被控的网卡芯片,所述fpga包括软处理器核、apb总线模块以及接口模块,其中,软处理器核作为cpu,apb总线模块通过axi总线与软处理器核相连并受软处理器核控制;接口模块用于保证apb总线模块在网卡芯片的时序约束下实现对网卡芯片寄存器的读写操作。
[0045]
如图4所示,在fpga内部使用软处理器核microblaze作为cpu,apb桥接器通过axi总线与microblaze相连并受microblaze控制。在vitis中编写c程序,通过对apb外设地址的读写,实现对网卡寄存器的访问,使得对外设的访问如对内存单元的访问一样简单,fpga与网卡芯片之间的信号连接关系如图1所示。
[0046]
当fpga加载比特流文件后,其中的microblaze是cpu,apb映射为固定的地址,而对apb外设(网卡芯片)指定寄存器的操作,即是对这个固定地址再加指定偏移量的地址的操作。
[0047]
apb信号工作的详细过程为:
[0048]
当cpu发起写操作时,apb的psel和pwrite置为高电平,paddr上输出寄存器的物理地址,由于系统采用了4字节对齐,需要把地址paddr[11:2]赋值给addr[9:0]。pwdata[15:0]上是要给上述物理地址赋的值,经过一个pclk周期,penable跳变为高电平,pready为高电平时,数据pwdata[15:0]传输给网卡芯片的data[15:0],data[15:0]的数据会在网卡芯片的采样时间内写入到地址为addr[9:0]的寄存器中。
[0049]
当cpu发起读操作时,apb的psel置为高电平,pwrite置为低电平,paddr上输出寄存器的物理地址,与读操作相同的,需要把地址paddr[11:2]赋值给网卡芯片的addr[9:0]。
为了从速度较慢的data[15:0]中采样活得正确的数值并传输到apb的prdata[15:0],使用含有等待的读方式,即当psel置为高电平一个pclk周期后,penable跳变为高电平时,先把pready信号拉低,直到网卡芯片的data[15:0]上的数据准备好后,才把pready信号拉高,并把data[15:0]的数据赋给prdata[15:0],此时完成读操作。
[0050]
根据图2所示的网卡芯片读操作时序图和表1所示的读操作时序限制,将网卡芯片的读操作的程划分为如下几个阶段:
[0051]
步骤1.准备addr,拉低/cs和/rd;
[0052]
步骤2.经过t2(50ns),数据建立完成;
[0053]
步骤3.经过t4(20ns),令读选通和片选时间达到70ns;
[0054]
步骤4.经过t5(30ns),令片选时间间隔达到30ns,详细如表3所示。
[0055]
表1
[0056][0057]
表3
[0058][0059][0060]
根据图3所示的网卡芯片写操作时序图和表2所示的写操作时序限制,将网卡芯片的写操作的程划分为如下几个阶段:
[0061]
步骤1.准备addr,拉低/cs和/wd;
[0062]
步骤2.经过t1(10ns),数据建立完成;
[0063]
步骤3.经过t3(40ns),令写选通和片选时间达到50ns;
[0064]
步骤4.经过t5(30ns),令片选时间间隔达到30ns,详细如表4所示。
[0065]
表2
[0066][0067]
表4
[0068][0069]
进一步地,基于有限状态机和插入等待函数的网卡芯片的控制方法,根据表1和表2中的时序限制,对控制网卡芯片的过程按时间顺序进行分段,再根据上述分段,设计了包含7种状态(s0~s6)的状态机,在各状态下,分别对apb信号和网卡的信号/cs、/rd、/wr、addr[9:0]、data[15:0]进行控制,实现读或写操作。
[0070]
为了在状态机中兼容读写操作,并细化在各个状态所对应的信号操作,在上述的4个读或写的步骤中插入三个状态,并采用独热码定义状态机的7个状态,各状态对应的操作描述如下,状态转移图如图5所示:
[0071]
s0:空闲态,当psel置1时,说明apb有读或写请求,状态转移到s0。
[0072]
s1:开始态,若pwrite为高电平,说明apb是写请求,将/cs和/wr两个引脚拉低;否则,说明apb是读请求,将/cs和/rd两个引脚拉低。
[0073]
s2:建立时间等待态,若/wr为低,则等待t1时间后,跳转到s3;若/rd为低,则等待t2时间后,跳转到s3。
[0074]
s3:数据采样态,若/wr为低,将fetch信号置为高(在外部的组合逻辑中,当fetch为高时将pwdata[15:0]赋值给data[15:0]),跳转到s4;若/rd为低,从data[15:0]上读取数
据到prdata[15:0],跳转到s4。
[0075]
s4:片选时间等待态,若/wr为低,则等待t3时间后,跳转到s5;若/rd为低,则等待t4时间后,跳转到s5。
[0076]
s5:完成态,将/wr、/rd、/cs全部拉高,跳转到s6。
[0077]
s6:片选间隔等待态,等待t5时间后,跳转到s0。
[0078]
上述的状态机虽然保证了apb在网卡芯片的时序约束下对其寄存器实现读写操作,但是无法处理cpu过快的请求。常用的方法是再加如fifo模块,让cpu的请求以队列的形式处理,但是,如此会增加设计的复杂度。为了降低设计复杂度,本实施例中,在c程序的寄存器操作api当中插入了等待函数。如下所示:
[0079]
void nop(){volatile int delay=n;while(delay
‑‑
);}
[0080]
根据实际需要,设定上述n的值,从而保证了两次相邻的apb操作时间足够长;状态机不会因apb的突发操作请求而破坏,同时apb的操作请求也不会丢失。
[0081]
总之,本发明通过fpga实现对网卡芯片的控制,能够克服外设时序限制对apb时钟频率造成的制约,解除二者之间的耦合,进而提高cpu的主频及效率。此外,为了解决apb操作速度远高于网卡引脚上信号的传输速度这一问题,本发明在底层的操作寄存器api中插入等待函数nop(),从而避免了相邻两次apb读写操作时间间隔太短而导致状态机异常。
[0082]
以上所述仅是本发明的较佳实施例,并非对本发明做任何形式上的限制。凡是根据本发明的技术实质对以上实施例所作的任何的简单修改、等同变化,均落入本发明的保护范围之内。

技术特征:
1.一种总线接口式网卡芯片控制系统,其特征在于,包括作为主控的fpga和被控的网卡芯片,所述fpga包括软处理器核、apb总线模块以及接口模块,其中,软处理器核作为cpu,apb总线模块通过axi总线与软处理器核相连并受软处理器核控制;接口模块用于保证apb总线模块在网卡芯片的时序约束下实现对网卡芯片寄存器的读写操作。2.根据权利要求1所述的一种总线接口式网卡芯片控制系统,其特征在于,fpga采用4字节对齐,软处理器核为microblaze;apb总线模块的协议版本是基于amba3标准的apb3,其中:pclk频率与microblaze的主频保持相同;apb的32位总线地址paddr中仅使用其低12位,其中paddr[1:0]为保留位,用于四字节对齐,此外,使用paddr[11:2]的数据传给网卡芯片的地址总线addr[9:0];apb的32位写数据总线信号pwdata中仅使用其低16位,用于向网卡芯片的数据总线data[15:0]传送数据;apb的32位读数据总线信号prdata中仅使用其低16位,用于从网卡芯片的data[15:0]读取数据。3.根据权利要求1所述的一种总线接口式网卡芯片控制系统,其特征在于,当fpga的cpu发起写操作时,apb总线模块的psel和pwrite置为高电平,paddr上输出寄存器的物理地址;经过一个pclk周期,penable跳变为高电平,pready为高电平时,数据pwdata[15:0]传输给网卡芯片的data[15:0],data[15:0]的数据会在网卡芯片的采样时间内写入到地址为addr[9:0]的寄存器中;当fpga的cpu发起读操作时,apb总线模块的psel置为高电平,pwrite置为低电平,paddr上输出寄存器的物理地址;使用含有等待的读方式,即,当psel置为高电平一个pclk周期后,penable跳变为高电平时,先把pready信号拉低,直到网卡芯片的data[15:0]上的数据准备好后,才把pready信号拉高,并把data[15:0]的数据赋给prdata[15:0],此时完成读操作。4.根据权利要求3所述的一种总线接口式网卡芯片控制系统,其特征在于,cpu每执行完一次写操作或读操作后,均延迟一段时间,等待网卡芯片完成操作,再执行下一次操作。5.根据权利要求1所述的一种总线接口式网卡芯片控制系统,其特征在于,接口模块采用独热码定义7个状态,状态转移过程如下:s0:空闲态;此状态下,当psel为高电平时,说明apb总线模块有读或写请求,状态转移到s1;s1:开始态;此状态下,若pwrite为高电平,说明apb总线模块是写请求,将/cs和/wr两个引脚拉低;否则,说明apb总线模块是读请求,将/cs和/rd两个引脚拉低;s2:建立时间等待态;此状态下,若/wr为低,则等待t1时间后,跳转到s3;若/rd为低,则等待t2时间后,跳转到s3;s3:数据采样态;此状态下,若/wr为低,将fetch信号置为高,此时cpu将pwdata[15:0]赋值给data[15:0],跳转到s4;若/rd为低,从data[15:0]上读取数据到prdata[15:0],跳转到s4;s4:片选时间等待态;此状态下,若/wr为低,则等待t3时间后,跳转到s5;若/rd为低,则等待t4时间后,跳转到s5;
s5:完成态;此状态下,将/wr、/rd、/cs全部拉高,跳转到s6;s6:片选间隔等待态;此状态下,等待t5时间后,跳转到s0。

技术总结
本发明为一种总线接口式网卡芯片控制系统,属于集成电路应用领域。本发明包括作为主控的FPGA和被控的网卡芯片,所述FPGA包括软处理器核、APB总线模块以及接口模块,其中,软处理器核作为CPU,APB总线模块通过AXI总线与软处理器核相连并受软处理器核控制;接口模块用于保证APB总线模块在网卡芯片的时序约束下实现对网卡芯片寄存器的读写操作。本发明能够克服外设时序限制对APB时钟频率的制约,解除二者之间的耦合,提高CPU的主频及效率。提高CPU的主频及效率。提高CPU的主频及效率。


技术研发人员:刘文元
受保护的技术使用者:中国电子科技集团公司第五十四研究所
技术研发日:2023.03.06
技术公布日:2023/7/19
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐