本文转载自: XILINX开发者社区微信公众号
本文作者:赛灵思工程师 Gray Pan
目前的 ORAN IP 提供两种例子工程:
1. 一个是新建Block Design,添加IP之后,通过运行Block Automation来产生一个例子。这个例子不仅包含了ORAN IP,也将物理层所需要的10G/25G以太网IP和一个1588 PTP的用例都囊括了。该例子工程主要用于做板上demo,具体后续上板操作方式,以及相关软件驱动,可以在下面这个AR里了解到详情: https://support.xilinx.com/s/article/1254509
2. 另一个方式是直接从IP Catalog里添加一个新的ORAN IP到Vivado工程里面,然后右键点击这个IP,选择Open IP Example Design…,这样产生的例子工程,只包含了一个ORAN IP,没有以太网等。但是其在ORAN IP外添加了testbench和测试用例,因此这个例子工程可以用来跑仿真。产生完毕之后,直接点击Vivado里面的Run Behavioral Simulation,就能把仿真跑起来,并查看例子是如何完成ORAN的同步,以及收发数据。
接下来,本文将指导用户,如何使用第二种方式产生的例子工程,添加自己的数据激励,用于完成自己所需要的仿真验证。
首先,用户的测试数据激励,是来自物理层以太网的数据包,一般会用pcap文件(如果还没有的话,可以先搜索例子工程目录下面,有几个pcap文件的例子,供参考)。使用Wireshark打开pcap文件(注意选ORAN协议),就可以看到包里面具体数据的解析了,如下图:
而IP仿真例子工程里用的数据激励则来自于memory文件,如下图,找到对应目录下的文件,客户可以手动或者自己写个脚本,修改里面数据为自己的数据激励(比如先从Wireshark里导出一个JSON的数据文件),就可以拿例子工程仿真来仿自己的数据源了。
Memory文件里面的数据激励,按如下格式排列:
在每个以太网包开始之前有两行:
第一行是包开始的时间,
第二行是包长度,下图中的这个例子,就是IP例子工程提供的数据激励用例,第一个包长度为6e,即长度为110 bytes。
这样在仿真的时候,就可以在以太网的RX侧到ORAN的defm这个接口处,看到上面这些数据了,如下图:
例子仿真工程当中,其它用户还需要修改的地方,有以下两处:
1. 按照用户需求,配置ORAN的寄存器,打开“demo_tb.v”进行修改。
a. 可以直接修改下面这段tb里的配置,也可以先注释掉下面这段配置。
b. 然后用exdes_axi_wr来将你需要配置的寄存器值依次写入,如下:
exdes_axi_wr(`IP_BASE_ADDR + `hE600 , `hxxxx );
exdes_axi_wr(`IP_BASE_ADDR + `hE608 , `hx );
exdes_axi_wr(`IP_BASE_ADDR + `h6110 , `hx );
2. 由于产生的这个例子工程,总是用的200MHz内部时钟。还可以修改时钟频率为用户实际设计里的时钟频率。
由于时钟用到的地方不少,需要修改的地方包括例子工程里面的以下几处:
a. ORAN IP产生的图形界面里面
b. IP “torwave”的产生图形界面里面,包括Clocks For 10ms,1ms,Ps Per Clock
c. Clocking Wizard的clk_out2输出
d. 还有“radio_start_recover”,如果用到的话
e. 以及demo_tb.v里的clk_in_ps
总之,经过以上的修改,用户就可以利用ORAN IP提供的例子工程,跑自己的数据激励仿真了。这样用户就可以验证IP的配置,针对自己的ORAN下行(以太网接口)数据,是否能正确工作起来。