Zynq开发实践
文章平均质量分 78
zynq开发实践
嵌入式-老费
计算机科班出身,09年研究生毕业即投入嵌入式开发工作,欢迎付费咨询,微信联系:xiaoxing_fei。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Zynq开发实践(SDK之TTC定时器)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 zynq上面的定时器有两种,一种是cpu这种,也就是之前所说的scutimer,还有一种就是ttc定时器。前者多用于os中断,或者是高精度定时器场合。后者就是用于一般的应用开发,比如一般的定时器开发,或者是pwm开发等等。今天,我们就来学习下ttc定时器怎么用。原创 2025-09-29 06:36:40 · 478 阅读 · 0 评论 -
Zynq开发实践(SDK之串口收发)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 嵌入式开发过程中,时常会需要和上位机通信。目前用到上位机的场景很多,比如说监控,比如说标定等等。实际通信方式上面,方法也不少,比如说232、485、usb和网络通信等等。其中最简单的方式,还是串口。原创 2025-09-27 09:40:41 · 596 阅读 · 0 评论 -
Zynq开发实践(SDK之FreeRTOS使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 zynq即使作为裸机使用,其实也是非常方便的。之前我们开发tf卡的时候,sdk本身除了提供了底层的驱动之外,还准备了xliffs文件系统,也就是fatfs的变型版本。这就意味着如果tf卡插入到卡槽里面,我们就可以直接读写里面的文件了。当然,不仅仅是fs,zynq本身还移植好了rtos,即开源的freertos,使用上面还是非常方便的。今天就来看看freertos怎么使用,为后面的使用原创 2025-09-26 08:28:52 · 900 阅读 · 0 评论 -
Zynq开发实践(SDK之PL中断)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 实际开发中,我们还是希望有一部分工作是放到PL上面去做的,比如说低效率的io工作,或者是算法类的工作。但是这类工作做完之后,怎么告诉ps呢?这里面就有两种办法,一种是寄存器读取,也就是ps轮询的办法;还有一种就是中断的方法,整理上来说,中断的方法要比轮询的方法效率高很多,但前提是中断也不能过于频繁。原创 2025-09-25 08:15:33 · 1305 阅读 · 0 评论 -
Zynq开发实践(SDK之代码调试)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 大多数同学编写代码的时候,都喜欢用串口打印调试的方法来解决问题,这一点无可厚非。对于比较简单的bug,还是比较实用的。就是实际操作的时候稍微麻烦一点。但是对于比较复杂的bug,如果还是采用串口打印的方法,就显得效率比较低,而且未必可以短时间发现bug的root cause是什么。zynq作为soc芯片,本身用jtag不仅可以支持fpga烧入、flash烧入,还支持代码调试,这也是jt原创 2025-09-23 08:08:42 · 439 阅读 · 0 评论 -
Zynq开发实践(SDK之TF卡使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 关于存储,前面我们谈到了flash,也就是norflash。并且在norflash上面,我们可以烧入BOOT.bin,这样就可以完成烧入镜像的工作。但是flash本身的存储空间一般不大,没有办法存储更多的数据。而zynq上面除了qspi接口之外,还有sd0、sd1接口,就非常适合用来进行tf卡的驱动和fatfs文件系统的部署。今天我们就来看一下如果使用sd0加载tf卡。原创 2025-09-22 07:44:43 · 737 阅读 · 0 评论 -
Zynq开发实践(SDK之固件烧入到Flash)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 经过一段时间的开发,大家也发现了我们的开发都是基于jtag完成的。但是真正部署的时候,大家都是把固件放到板载芯片里面的,例如emmc、flash芯片。这flash芯片就有norflash,也有nandflash,不过一般都是把固件放到norflash里面。另外,虽然启动代码也能放到tf卡上,但是tf卡还是以保存数据为主。原创 2025-09-21 20:02:55 · 842 阅读 · 0 评论 -
Zynq开发实践(SDK之自定义IP3 - 软件&IP联调)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们写了verilog、做了verilog的仿真,以及fpga的验证,其实就是为了今天的这一步,即ip的使用。也就是说,可以通过ps可以访问pl,即用ps来访问和控制fpga,这是效率最高的一个方式。很多的功能芯片都是这么来做的,比如说usb camera,整个芯片里面的cpu是很弱的,有的时候就是51或者arm芯片,这种情况下,cpu做不了什么事情,就只能做控制处理。因此,zy原创 2025-09-21 15:26:41 · 1204 阅读 · 0 评论 -
Zynq开发实践(SDK之自定义IP2 - FPGA验证)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 既然准备好了verilog代码,也在iverilog工具上面仿真过了,下面是不是就可以直接做成ip了。答案肯定是否定的,因为仿真ok的内容,直接fpga部署的时候,有可能会出现各种问题。至于会出哪些问题,这里简单总结下。原创 2025-09-20 22:38:38 · 452 阅读 · 0 评论 -
Zynq开发实践(SDK之自定义IP1 - 编写Verilog)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们编写了ps和pl之间的通信,只不过这里的pl使用的是官方提供的ip。还有一种情况,那就是有的时候,我们希望自己写ip,这样可以被ps调用。相对而言,这也是构建自己优势的一个重要方法。为了实现这一点,我们按步骤来做这一件事情。首先是编写verilog代码,然后是fpga验证,最后是添加axi接口、被ps调用。这次自定义的ip是呼吸灯。原创 2025-09-20 08:33:00 · 561 阅读 · 0 评论 -
Zynq开发实践(SDK之PS、PL互联)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 本身zynq就是一个cpu和fpga的结合体。在这个soc上面,可以做纯mcu、soc开发,也可以做fpga开发,但是更重要的是它可以实现ps和pl的互联互通。比如说,如果缺少什么外设接口,那么可以用pl实现,让它被ps调用处理。或者是什么算法需要加速,也可以pl实现,也可以被ps访问调用。当然,和分列式的soc、fpga相比较,ps和pl之间可以通过总线通信,这样一来要方便的多。原创 2025-09-19 08:09:45 · 1259 阅读 · 0 评论 -
Zynq开发实践(SDK之PS接口扩充EMIO)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面说过,在zynq ps里面固化了很多的ip,这些ip用不用都在那里放着。但是我们也知道,一颗soc的封装上,外设pin脚的数量都是有限的。就拿7020来说,它的ps只有54个。这种情况下,如果ps的全部54个pin都用完了,那就只能借用pl的引脚了,这就是所谓的ps接口扩充,也是所谓的emio。原创 2025-09-19 06:48:40 · 543 阅读 · 0 评论 -
Zynq开发实践(SDK之定时器)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 定时器是芯片提供的一个常见功能。尤其是在mcu里面,如果我们不想使用rtos开发固件程序,一般情况下就会选择轮询+定时器中断来处理,最多加一个状态机。当然在处理的过程中,还有可能需要处理其他的中断,这也是有可能的。今天就看看zynq上面怎么处理定时器的。原创 2025-09-18 20:12:24 · 382 阅读 · 0 评论 -
Zynq开发实践(SDK之MIO按键输入、LED输出)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们说过,zynq分成ps和pl两个部分。其中ps主要是arm这个部分,而pl主要是fpga这部分。ps这部分除了ddr3之外,还有一部分称之为mio。mio,也就是多功能io的意思。这里的多功能就是常规的一些接口,比如gpio、uart、sdio、eth、usb等接口。这些ip都是固化在ps里面。当然我们可以不用这些功能,但是用不用他们已经存在ps里了。这一点不像pl,用的时候原创 2025-09-18 08:28:12 · 566 阅读 · 0 评论 -
Zynq开发实践(SDK之第一个纯PS工程)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 学编程的时候,大家一般都比较重视第一个项目的创建和执行。第一个fpga程序一般是led闪烁,第一个c程序一般就是hello world程序。今天就介绍下,zynq下面的hello world应该怎么编写。和其他soc程序不一样,zynq编写c代码之前,需要先创建一个block design,这就是最大的不同。整个流程稍微多了一点,不过熟能生巧就好。原创 2025-09-16 23:28:04 · 909 阅读 · 0 评论 -
Zynq开发实践(SDK之开发准备)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们都知道,zynq是arm+fpga的组合体。前面介绍了它的fpga开发,那么接下来就可以说一下zynq的sdk开发。所谓的sdk开发,就是讲zynq里面的cpu性能比较强,外设资源比较丰富,即使不依赖pl,也可以用它做mcu或者soc开发。原创 2025-09-14 19:01:09 · 645 阅读 · 0 评论 -
Zynq开发实践(FPGA之选择开发板)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们之所以选用zynq开发板,就在于它支持arm软件开发,也支持fpga开发,甚至可以运行linux,这是之前没有过的体验。实际开发中,我们就可以把业务和逻辑放在arm上,加速部分放在fpga上,各自发挥自己的优势,最大限度使用好zynq芯片。和之前zynq只有zedboard开发板相比较,现在zynq出了很多的板子,那么应该怎么选择呢?原创 2025-09-13 11:17:06 · 728 阅读 · 0 评论 -
Zynq开发实践(FPGA之第一个vivado工程)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 数字电路设计,如果仅仅是写写代码,做做verilog仿真,那么其实是不需要转移到fpga上面的。这就好比是算法工程师,他做好了算法,写好了matlab仿真之后,如果仅仅是为了发论文,这个时候其实目的已经达到了。但是我们最终是需要用verilog做产品的,也就是所有的电路都要port到fpga上的,这个时候就要想办法创建fpga工程,下载程序了。原创 2025-09-12 08:18:08 · 1181 阅读 · 0 评论 -
Zynq开发实践(FPGA之ddr sdram读写)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 用fpga做图像的时候,如果图像的输入速度和显示速度不匹配,这个时候就需要把图像先放到ddr里面。因为fpga里面毕竟还是空间太小,把图像全部缓存到fpga里面是不现实的。但是提到ddr很多人都会担心学不会,一来ddr pin比较多,布局布线本身就很麻烦了,而且ddr还分成ddr1、ddr2等很多种类型,很担心自己学不会是正常的。但这也是没有必要的。原创 2025-09-11 08:34:02 · 1364 阅读 · 0 评论 -
Zynq开发实践(FPGA之spi实现)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 虽然串口用的地方比较多,实现起来也比较简单。但是串口本身速度比较慢,不利于高速数据通信。而且单个串口没有办法和很多设备通信。所以,人们在串口的基础之上添加clk、cs信号,这样就形成了基本的spi总线协议。原创 2025-09-10 08:16:45 · 1081 阅读 · 0 评论 -
Zynq开发实践(FPGA之vga输出)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 vga本身是一个很老的视频输出接口。现在只有在很老的pc电脑上才看得到。不过由于它和lcd rgb接口很像,就少一个de信号,因此也是非常值得拿出来学一学的。因为很多lcd的屏幕,特别是非mipi、lvds这种差分总线类的屏幕,大部分都是和vga很相似的接口。原创 2025-09-09 08:41:58 · 390 阅读 · 0 评论 -
Zynq开发实践(FPGA之rtl算法加速)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 大家都知道fpga是好东西,但是大家不清楚的,是fpga可以帮助我们做什么。平时,我们在电商网站可以买到一些fpga开发板,但是这些开发板提供的demo案例,mcu也可以去做。这样就会造成一个疑问,似乎就没有必要学习fpga。但事实上,fpga本来就应该去做mcu和soc做不了的事情,而不应该重复他们已经做过的事情。 所以,fpga要做的,应该是数量很多的低速接口、原创 2025-09-06 07:29:22 · 598 阅读 · 0 评论 -
Zynq开发实践(FPGA之uart接收)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 uart之所以被称之为最简单的通信协议,一方面是因为它没有时钟信号,另外一方面是因为接收和发送是两条线分开来的。它不像一些协议,例如iic、sdio等等,数据位既可以用做输入、也可以用做输出。uart这样设计起来,就会简单很多。不过,很多sdio协议,也支持spi输入输出,当然这是后话了。原创 2025-09-05 06:31:02 · 631 阅读 · 0 评论 -
Zynq开发实践(FPGA之uart发送)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga作为独立的模块,本身肯定有很多的优势,当然也有缺点,价格就是缺点。不过fpga很少是独立使用的,它得和其他嵌入式板子通信,或者是直接和pc进行通信。通信的方法很多,有uart、iic和spi,这几种是经常出现的方式。这里面最简单的就是uart,因为它比较简单,发送就是tx,接收就是rx。原创 2025-09-04 08:23:59 · 493 阅读 · 0 评论 -
Zynq开发实践(FPGA之pwm输出)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们学习了按键和led,虽然可以做一些基础的外设控制。比如假设把led换成卷帘门的话,这就是卷帘门开关了。当然,这里用mcu也可以,用带网络的gpio设备也可以,用fpga有点大才小用,过于奢侈了。今天我们学一下pwm输出,其实pwm在电机控制领域很有用。原创 2025-09-03 07:28:28 · 560 阅读 · 0 评论 -
Zynq开发实践(FPGA之流水线和冻结)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 谈到fpga相比较cpu的优势,很多时候我们都会谈到数据并发、边接收边处理、流水线这三个方面。所以,第三个优势,也就是流水线的概念,对大家来说其实并不陌生。而且大家如果学的是计算机科学与技术专业,那么肯定会学过计算机组成原理或者是计算机体系结构这些课程,里面谈到cpu设计的时候,也会涉及到流水线的概念。原创 2025-09-02 07:57:20 · 1120 阅读 · 0 评论 -
Zynq开发实践(FPGA之状态机使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于一般的fpga开发,基本上就是总线协议+状态机开发。很多项目,之所以用fpga,而不用mcu,就是看中了fpga的实时处理。不然从性价比的角度里来说,mcu肯定是最合算的。只有对成本不是那么看重,并且对实时性要求很高的企业,才会用fpga,比如车辆、医疗、航空航天、军工等等。 因此,对这些低速访问,但是实时性要求高的行业,通常就是了解一些通用的协议,比如uart原创 2025-09-01 07:56:41 · 513 阅读 · 0 评论 -
Zynq开发实践(FPGA之平台免费IP)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和c语言平台提供posix api一样,一般fpga厂家也会提供各种各样免费的ip给客户使用。这样,客户就不需要自己去写每一个ip了,把重心放在自己的业务上就好了。这些免费的ip有的是关于频率的,有的关于存储的,有的关于总线的,有的关于计算的,还有的是关于dma的,大家可以先简单了解下。原创 2025-08-31 07:18:09 · 573 阅读 · 0 评论 -
Zynq开发实践(FPGA之输入、输出整合)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga开发的时候习惯上先把功能拆分成若干个模块。针对这些模块,一个一、个实现好之后,再用wire连接即可。这一点有点像软件编程的function。如果是规模不大的c项目,例如嵌入式mcu项目。我们也是先把项目拆分成若干个function,一个一个实现好function后,再用全局变量或者临时变量把这些function联系在一起,这样项目就可以拼起来了。fpga也是一样的。原创 2025-08-30 06:37:15 · 459 阅读 · 0 评论 -
Zynq开发实践(FPGA之按键输入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 led显示是数字电路中的输出部分,最简单的应用场景。那输入部分的话,就是按键。这样按键和led,就是最简单的输入和输出部分。很多开发板也是会以这两个case作为范例,来进行教学处理。这样学完之后,大家有一个基本的印象,即用fpga如何来描述输入输出电路。原创 2025-08-29 06:52:31 · 472 阅读 · 0 评论 -
Zynq开发实践(FPGA之闪烁led)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 数字电路的设计其实就在于时序逻辑的设计。如果电路设计中只有组合逻辑,没有时序逻辑,那么最多就是一个译码器。正式因为有了时序逻辑的存在,才有了存储,有了状态的概念,才能开发出各种协议以及丰富多彩的应用。因为这个时候的输出,不仅和当前输入有关系,还和当前的状态有关系,这就很有意义了。 当然,从学习的角度说,再简单的verilog代码也要自己写一写、测一测,不然我们以为自原创 2025-08-28 07:55:27 · 341 阅读 · 0 评论 -
Zynq开发实践(FPGA之组合逻辑、时序逻辑)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 整个数字电路里面,最重要的就是组合逻辑和时序逻辑。有了这两部分做基础,就可以做其他部分的功能了。学习数字电路的时候,主要介绍的内容也就是怎么用组合逻辑芯片、触发器芯片来构建基本数字电路。现在有了verilog之后,就不再需要我们真的去搭建数字电路,只需要我们用verilog去描述对应的数字电路就可以了。剩下来的工作完全可以通过quartus或者是vivado去完成即可。原创 2025-08-27 07:27:29 · 534 阅读 · 0 评论 -
Zynq开发实践(FPGA之verilog仿真)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们都知道,做fpga开发,可以用verilog,也可以用vhdl。开发完之后,如果需要实际验证,那么就可以综合一下,下载到fpga,看下效果。但是如果开发的内容比较多,或者开发的内容,是由很多人一起完成的,并且fpga验证平台也不多,这个时候应该怎么做呢?通常我们都是借助于verilog仿真来实现功能验证的。原创 2025-08-26 22:05:01 · 929 阅读 · 0 评论 -
Zynq开发实践(Verilog、仿真、FPGA和芯片设计)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 zynq最大的优势,就是把arm和fpga结合在一起了。这样一颗soc里面,就可以用软件去驱动外设ip,这是之前没有过的体验。因为以前,arm和fpga通信,大多数都是分列式设计,arm是单独的一颗soc,fpga也是单独的芯片,两者通过外部总线沟通,比如pcie等等。现在有了zynq,直接借助于axi总线就能通信。但是很多小伙伴呢,还是不太明白fpga该怎么开发,以及verilog原创 2025-08-24 20:01:52 · 913 阅读 · 0 评论 -
Zynq开发实践(FPGA高频使用的两个场景)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 本身fpga是介于纯软件和asic之间的元器件。如果是纯软件,那我们要做的,就是纯上层开发。只要相关驱动已经实现,那么我们对设备的处理,就是打开、关闭、读、写、控制这五个部分。至于底层是怎么实现的,我们完全不用管。还有一种就是asic,这类就是芯片开发的范畴,虽然fpga和asic一样,都是用verilog开发,但是两者的思路是完全不一样的。前者类似于搭积木,后面则是从0到1造房子。原创 2025-08-22 08:43:06 · 1065 阅读 · 0 评论 -
Zynq开发实践(电路板部分)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于zynq的学习,在一开始电路板部分,建议一开始的时候不需要自己去开发板子。哪怕是自己可以绘制核心板,也不需要自己去做,花一点钱去买一个即可。我们应该把大部分时间放在ps+pl的学习上面。那么zynq的电路板一般是什么样的呢?原创 2025-08-21 06:50:12 · 350 阅读 · 0 评论 -
Zynq开发实践(开发准备)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 目前市场上面zynq的开发板很多,有7010,有7020,大家可以根据自己的需求灵活去选择。当然不仅仅是开发板,连接线、串口、usb hub这些部分,最好也要准备下。除了硬件之外,就是软件安装,zynq使用到的vivado很大,安装有点麻烦。如果使用到linux的话,还需要安装linux版本的vivado,这也是需要注意的。原创 2025-08-20 06:27:10 · 627 阅读 · 0 评论 -
Zynq开发实践(开篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在嵌入式芯片领域,除了mcu和soc、dsp以外,还有一类集成式的soc也是非常有特点的。比如集成cpu和gpu的nvidia jetson系列;集成cpu和dsp的ti j6、j7系列;集成cpu和mcu的stm32mp157系列,里面装了一个m4。还有一种就是cpu+fpga,比如zynq,这是大家听过最多的fpga集成芯片了。前面几种集成芯片的开发,基本都是c/c++开发,难度原创 2025-08-19 06:53:12 · 969 阅读 · 0 评论
分享