Skip to content

ey39/cordic_pynq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 

Repository files navigation

cordic_pynq

PYNQ-Project for Cordic Algorithm. 参加Xilinx举办的暑期学校,选择了一个综合性较强但比较简单的题目--cordic 一直有一块闲置的zynq板子,都积灰了,趁着这个机会好好学习一下

cordic算法

cordic是一种关于坐标变换的算法,可以实现直角坐标、极坐标...的转换,网上这些具体介绍很多,此处不再赘述

hls

这是我第一次接触hls,之前一直都在写Verilog,很新奇,虽然我对C挺熟悉的,但是让我用C来描述接口这些,我刚开始还真是摸不着头脑 官方给的资料确实很详尽,但是让我这种新手无从下手,挺缺乏一些具体案例的描述 在这两天完成这个算法实现的过程中,我遇到的问题几乎都是关于这些定义如何去定义的初级问题

example

在cordiccart2pol.cpp中,关于顶层接口的定义就耗费了我大半天的时间,我在网上搜索各种不靠谱的资料,也找不到任何关于这些接口该如何定义的详细解释,于是我只能慢慢摸索,发现cordic对于输入输出几乎没有什么要求,我们这些输入输出其实不需要并发,我们只需要用同一个s_axilite接口进行输入输出即可,但是问题又来了,我当时不知道需要定义一个return端口(在看了许多其他例程之后才发现)来让axi能够握手,这就确实很让人摸不着头脑,也可能是笔者比较愚笨,翻阅技术文档时不够细致,还好最后解决了这个问题(在zynq blockdesign中报了一个critical warning才发现的这个问题--它描述IP中的ap_start没有连接)。

vivado block design

这个其实不算是陌生人啦,在之前有玩过sdk,摸索过一段时间,那时候也挺懵的,因为无处查阅库,就投身别的板子了。

pynq

这个暑假也是我第一次接触pynq框架(又一次点灯成功)这个学期一直在学校学习各种算法,用python作为框架,其实也是老朋友了,但是用python来操作硬件我也是第一次,体验其实也还行,第一次在线部署fpga,随时随地改fpga里面的布局布线,不过要在C和python的数据结构之间辗转反侧就令人很难受,我从来没接触过的那些binascii库啥的搞的我晕头转向(会报错一个),可操作性确实还有待提升,代码笔者沿用了pp4fpga开源项目上的notebook,应该是国外的大佬写的。但是英语也是一大障碍,在运行python代码的时候我又吃了一次ap_start的亏,我实际上是启用了两组ap_axi口,但是我一开始在python中实例化MMIO时只例化了其中一组,导致这axi一直没法reset而我输出的r和theta一直是同一个值,后面经过一晚的debug后才得以PASS。 确实PYNQ的用户还是比较少,需要大家一起努力!

Author:ey Updated at 2:37 Feb Aug.9 in 2022

About

PYNQ-Project for Cordic Algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published