【OpenHW参赛手记】System Generator 与XPS连接的方法

简介:

由于项目需要用到DSP算法实现,考虑用System Generator辅助设计算法,但在参赛赠送的书里没有相关知识,需要自己动手摸索。

还好在Matlab Simulink 内包含库XilinxBlocksets里右键发现了帮助文档,进入之后了解了怎么用Xilinx器件来完成算法设计,并生成网表。最重要的器件应该是Gatewayin和gatewayout,将matlab内的模块与Xilinx模块隔离,实现数位精度变换。这两个元件相当于input和output,在生成实例的时候可以看到。

 

看了帮助文档后,做个实验,只用PL部分,不用PS部分,用ProjectNavigator新建一个工程,添加一个SysGen模块,里面什么都不用做,直接将Gatewayin连接到Gatewayout,位数设为8bit,无小数部分。然后新建顶层verilog模块,生成一个SysGen的实例(有模板可用),将输入通过UCF约束到电路板的SW,输出约束到LED,生成.bit,下载到PL上,很容易就成功实现了。

在此基础上,再次进入matlab,在Gatewayin和Gatewayout之间加入一个移位器模块,设为左移,重新生成.bit下载,也成功了。

 

单独的DSP模块显然功能很有限,必须要和双核ARM9连接起来才有价值。

新建planahead工程,参考懒兔子的自定义IP部分,生成mygpio模块,然后连接到AXI总线,这时不要连接到外部引脚,而是连接到顶层模块的内部信号线。

在planahead里面,新建SysGen模块,搭建自己的算法,生成模块,回到planahead。

之前的内部信号线连接到SysGen模块的输入。

还是像懒兔子一样导出软件工程,开发方法没有差别。下载.bit文件配置PL部分,然后运行程序。

这时就可以发现,你通过串口写到slave寄存器里的值,通过SysGen模块的处理,就能迅速反馈给你。这就说明,通过planahead顶层模块可以实现SysGen和XPS的互联,属于系统互联,这里涉及到两个系统,一个是DSP子系统,一个是PS子系统,二者都在planahead顶层模块被实例化,然后用信号线互联。

这是最近两天的摸索,算法实现总算有了点眉目。

另外看到在SysGen里面支持AXI4总线,而且可以导出为XPS工程,还有待进一步研究,找到更紧密的连接方式,这样可以进一步提高数据在DSP模块和XPS之间的传输效率。如果大家有什么好的建议,请不要吝啬及时告诉我一声~~~~

 

时间真是快,还有很多值得去研究的内容,包括GAL均衡算法优化,多种算法(LMS,RLS,基于小波的。。。)性能对比,盲均衡技术实现(CMA,DF)等。。。除了算法实现外还有信号类型分析(DRM,DTV,GSM,4G),时不我与,不再多说,回去继续埋头学习。。。

目录
相关文章
|
4月前
【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大于1MB的文件的日志没有记录在Application Insights中
【Azure Function & Application Insights】调用Function上传和下载文件,有时候遇见大于1MB的文件的日志没有记录在Application Insights中
|
4月前
|
开发框架 .NET 编译器
【Azure Developer】使用Azure PubSub服务示例代码时候遇见了.NET 6.0的代码转换问题
【Azure Developer】使用Azure PubSub服务示例代码时候遇见了.NET 6.0的代码转换问题
|
7月前
|
数据采集 数据库
System Generator学习——时间和资源分析
System Generator学习——时间和资源分析
67 3
|
7月前
|
算法 C++
System Generator学习——将代码导入System Generator(三)
System Generator学习——将代码导入System Generator
132 2
|
7月前
System Generator学习——将代码导入System Generator(二)
System Generator学习——将代码导入System Generator
57 1
|
7月前
|
C++
System Generator学习——将代码导入System Generator(一)
System Generator学习——将代码导入System Generator
58 1
|
应用服务中间件
TeaVM的samples/benchmark范例运行办法
TeaVM的samples/benchmark范例运行办法
115 0
TeaVM的samples/benchmark范例运行办法
|
存储 安全 Go
Go 开发常用操作技巧--channel
在 Go 语言中,提倡使用通信来共享内存,而不是通过共享内存来通信,这里的通信就是通过 channel 发送接收消息的方式进行数据传递,而不是通过修改同一个变量。
177 0
Go 开发常用操作技巧--channel
问题集锦:使用CMake部署Qt应用程序:set_target_properties、get_target_property
问题集锦:使用CMake部署Qt应用程序:set_target_properties、get_target_property
317 0
|
自然语言处理 机器人
Robot Framework(8)- Collections 测试库常用的关键字列表
Robot Framework(8)- Collections 测试库常用的关键字列表
139 0
Robot Framework(8)- Collections 测试库常用的关键字列表