- 博客(1460)
- 资源 (4)
- 收藏
- 关注
原创 Zynq开发实践(SDK之开发准备)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们都知道,zynq是arm+fpga的组合体。前面介绍了它的fpga开发,那么接下来就可以说一下zynq的sdk开发。所谓的sdk开发,就是讲zynq里面的cpu性能比较强,外设资源比较丰富,即使不依赖pl,也可以用它做mcu或者soc开发。
2025-09-14 19:01:09
505
原创 Zynq开发实践(FPGA之选择开发板)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们之所以选用zynq开发板,就在于它支持arm软件开发,也支持fpga开发,甚至可以运行linux,这是之前没有过的体验。实际开发中,我们就可以把业务和逻辑放在arm上,加速部分放在fpga上,各自发挥自己的优势,最大限度使用好zynq芯片。和之前zynq只有zedboard开发板相比较,现在zynq出了很多的板子,那么应该怎么选择呢?
2025-09-13 11:17:06
539
原创 Zynq开发实践(FPGA之第一个vivado工程)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 数字电路设计,如果仅仅是写写代码,做做verilog仿真,那么其实是不需要转移到fpga上面的。这就好比是算法工程师,他做好了算法,写好了matlab仿真之后,如果仅仅是为了发论文,这个时候其实目的已经达到了。但是我们最终是需要用verilog做产品的,也就是所有的电路都要port到fpga上的,这个时候就要想办法创建fpga工程,下载程序了。
2025-09-12 08:18:08
857
1
原创 Zynq开发实践(FPGA之ddr sdram读写)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 用fpga做图像的时候,如果图像的输入速度和显示速度不匹配,这个时候就需要把图像先放到ddr里面。因为fpga里面毕竟还是空间太小,把图像全部缓存到fpga里面是不现实的。但是提到ddr很多人都会担心学不会,一来ddr pin比较多,布局布线本身就很麻烦了,而且ddr还分成ddr1、ddr2等很多种类型,很担心自己学不会是正常的。但这也是没有必要的。
2025-09-11 08:34:02
1000
原创 Zynq开发实践(FPGA之spi实现)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 虽然串口用的地方比较多,实现起来也比较简单。但是串口本身速度比较慢,不利于高速数据通信。而且单个串口没有办法和很多设备通信。所以,人们在串口的基础之上添加clk、cs信号,这样就形成了基本的spi总线协议。
2025-09-10 08:16:45
882
1
原创 Zynq开发实践(FPGA之vga输出)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 vga本身是一个很老的视频输出接口。现在只有在很老的pc电脑上才看得到。不过由于它和lcd rgb接口很像,就少一个de信号,因此也是非常值得拿出来学一学的。因为很多lcd的屏幕,特别是非mipi、lvds这种差分总线类的屏幕,大部分都是和vga很相似的接口。
2025-09-09 08:41:58
337
原创 Zynq开发实践(FPGA之rtl算法加速)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 大家都知道fpga是好东西,但是大家不清楚的,是fpga可以帮助我们做什么。平时,我们在电商网站可以买到一些fpga开发板,但是这些开发板提供的demo案例,mcu也可以去做。这样就会造成一个疑问,似乎就没有必要学习fpga。但事实上,fpga本来就应该去做mcu和soc做不了的事情,而不应该重复他们已经做过的事情。 所以,fpga要做的,应该是数量很多的低速接口、
2025-09-06 07:29:22
546
原创 Zynq开发实践(FPGA之uart接收)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 uart之所以被称之为最简单的通信协议,一方面是因为它没有时钟信号,另外一方面是因为接收和发送是两条线分开来的。它不像一些协议,例如iic、sdio等等,数据位既可以用做输入、也可以用做输出。uart这样设计起来,就会简单很多。不过,很多sdio协议,也支持spi输入输出,当然这是后话了。
2025-09-05 06:31:02
566
原创 Zynq开发实践(FPGA之uart发送)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga作为独立的模块,本身肯定有很多的优势,当然也有缺点,价格就是缺点。不过fpga很少是独立使用的,它得和其他嵌入式板子通信,或者是直接和pc进行通信。通信的方法很多,有uart、iic和spi,这几种是经常出现的方式。这里面最简单的就是uart,因为它比较简单,发送就是tx,接收就是rx。
2025-09-04 08:23:59
443
原创 Zynq开发实践(FPGA之pwm输出)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们学习了按键和led,虽然可以做一些基础的外设控制。比如假设把led换成卷帘门的话,这就是卷帘门开关了。当然,这里用mcu也可以,用带网络的gpio设备也可以,用fpga有点大才小用,过于奢侈了。今天我们学一下pwm输出,其实pwm在电机控制领域很有用。
2025-09-03 07:28:28
502
原创 Zynq开发实践(FPGA之流水线和冻结)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 谈到fpga相比较cpu的优势,很多时候我们都会谈到数据并发、边接收边处理、流水线这三个方面。所以,第三个优势,也就是流水线的概念,对大家来说其实并不陌生。而且大家如果学的是计算机科学与技术专业,那么肯定会学过计算机组成原理或者是计算机体系结构这些课程,里面谈到cpu设计的时候,也会涉及到流水线的概念。
2025-09-02 07:57:20
1008
原创 Zynq开发实践(FPGA之状态机使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于一般的fpga开发,基本上就是总线协议+状态机开发。很多项目,之所以用fpga,而不用mcu,就是看中了fpga的实时处理。不然从性价比的角度里来说,mcu肯定是最合算的。只有对成本不是那么看重,并且对实时性要求很高的企业,才会用fpga,比如车辆、医疗、航空航天、军工等等。 因此,对这些低速访问,但是实时性要求高的行业,通常就是了解一些通用的协议,比如uart
2025-09-01 07:56:41
472
原创 Zynq开发实践(FPGA之平台免费IP)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和c语言平台提供posix api一样,一般fpga厂家也会提供各种各样免费的ip给客户使用。这样,客户就不需要自己去写每一个ip了,把重心放在自己的业务上就好了。这些免费的ip有的是关于频率的,有的关于存储的,有的关于总线的,有的关于计算的,还有的是关于dma的,大家可以先简单了解下。
2025-08-31 07:18:09
525
原创 Zynq开发实践(FPGA之输入、输出整合)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga开发的时候习惯上先把功能拆分成若干个模块。针对这些模块,一个一、个实现好之后,再用wire连接即可。这一点有点像软件编程的function。如果是规模不大的c项目,例如嵌入式mcu项目。我们也是先把项目拆分成若干个function,一个一个实现好function后,再用全局变量或者临时变量把这些function联系在一起,这样项目就可以拼起来了。fpga也是一样的。
2025-08-30 06:37:15
409
原创 Zynq开发实践(FPGA之按键输入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 led显示是数字电路中的输出部分,最简单的应用场景。那输入部分的话,就是按键。这样按键和led,就是最简单的输入和输出部分。很多开发板也是会以这两个case作为范例,来进行教学处理。这样学完之后,大家有一个基本的印象,即用fpga如何来描述输入输出电路。
2025-08-29 06:52:31
429
原创 Zynq开发实践(FPGA之闪烁led)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 数字电路的设计其实就在于时序逻辑的设计。如果电路设计中只有组合逻辑,没有时序逻辑,那么最多就是一个译码器。正式因为有了时序逻辑的存在,才有了存储,有了状态的概念,才能开发出各种协议以及丰富多彩的应用。因为这个时候的输出,不仅和当前输入有关系,还和当前的状态有关系,这就很有意义了。 当然,从学习的角度说,再简单的verilog代码也要自己写一写、测一测,不然我们以为自
2025-08-28 07:55:27
295
原创 Zynq开发实践(FPGA之组合逻辑、时序逻辑)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 整个数字电路里面,最重要的就是组合逻辑和时序逻辑。有了这两部分做基础,就可以做其他部分的功能了。学习数字电路的时候,主要介绍的内容也就是怎么用组合逻辑芯片、触发器芯片来构建基本数字电路。现在有了verilog之后,就不再需要我们真的去搭建数字电路,只需要我们用verilog去描述对应的数字电路就可以了。剩下来的工作完全可以通过quartus或者是vivado去完成即可。
2025-08-27 07:27:29
499
原创 Zynq开发实践(FPGA之verilog仿真)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们都知道,做fpga开发,可以用verilog,也可以用vhdl。开发完之后,如果需要实际验证,那么就可以综合一下,下载到fpga,看下效果。但是如果开发的内容比较多,或者开发的内容,是由很多人一起完成的,并且fpga验证平台也不多,这个时候应该怎么做呢?通常我们都是借助于verilog仿真来实现功能验证的。
2025-08-26 22:05:01
808
原创 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
772
1
原创 Zynq开发实践(FPGA高频使用的两个场景)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 本身fpga是介于纯软件和asic之间的元器件。如果是纯软件,那我们要做的,就是纯上层开发。只要相关驱动已经实现,那么我们对设备的处理,就是打开、关闭、读、写、控制这五个部分。至于底层是怎么实现的,我们完全不用管。还有一种就是asic,这类就是芯片开发的范畴,虽然fpga和asic一样,都是用verilog开发,但是两者的思路是完全不一样的。前者类似于搭积木,后面则是从0到1造房子。
2025-08-22 08:43:06
957
原创 Zynq开发实践(电路板部分)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于zynq的学习,在一开始电路板部分,建议一开始的时候不需要自己去开发板子。哪怕是自己可以绘制核心板,也不需要自己去做,花一点钱去买一个即可。我们应该把大部分时间放在ps+pl的学习上面。那么zynq的电路板一般是什么样的呢?
2025-08-21 06:50:12
309
原创 Zynq开发实践(开发准备)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 目前市场上面zynq的开发板很多,有7010,有7020,大家可以根据自己的需求灵活去选择。当然不仅仅是开发板,连接线、串口、usb hub这些部分,最好也要准备下。除了硬件之外,就是软件安装,zynq使用到的vivado很大,安装有点麻烦。如果使用到linux的话,还需要安装linux版本的vivado,这也是需要注意的。
2025-08-20 06:27:10
482
原创 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
874
原创 产品开发实践(容易犯的几个错误)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 不管是为了兴趣爱好,还是为了后期的个人发展,技术学习到一定程度的时候,就想自己做个产品。看看有没有机会推广一下,甚至看看有没有商业发展的可能性。能思考到这一点,其实是非常难得可贵的。那接下来如何去做,就是一个大问题。很多时候方向都是没有问题的,问题是如何落地,如何去实施。虽然说条条大路通罗马,但是实践过程中,还是会出现一些问题,这里简单总结下。
2025-08-17 17:18:30
388
原创 产品开发实践(常见的软硬结合方式)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面说过,传统的纯软件开发,在国内的大背景下面是很难存活的。但是如果是把软件,构建在硬件基础之上,并且在上面形成一定的优势,这样的产品是可以销售出去的。当然,软硬结合的方式很多,今天就来谈一谈。
2025-08-15 08:12:45
589
原创 产品开发实践(开篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 同样一个技术,可以应用在不同的产品上面,这是非常常见的事情。这就好比是刚从大学毕业的时候,两个人的基础可能差不多,但是若干年之后,两人的发展大相径庭。这里面有一部分是专业的原因,还有一部分就是产品和行业的原因。哪怕是相同的技术,由于身处不同的行业和平台,发展还是会显示出巨大差别的。作为个体来说,经过一段时间的沉积之后,应该从学什么,慢慢向做什么开始转变。
2025-08-11 07:12:28
456
原创 再谈fpga开发(总结篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和asic芯片相比,fpga具有很强的灵活性。不管是信号处理领域,还是算法定制领域都有很大的用处。但是fpga有一个很大的缺点,那就是价格问题。因为一个应用如果变成了通用产品,那么必然asic化,而规模化的asic芯片,无论在性能还是在成本上都有很大的优势。这就让fpga只能用在高频、实时、价格不敏感的领域,比如说航空、轨道交通、军工、医疗,这些都是属于价格没那么敏感的领域。纯消费类
2025-07-31 06:09:06
1150
原创 再谈fpga开发(不能转成verilog的c语言特性)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 用过vivado的同学都知道,vivado里面有一个hls工具,也就是用高层语言直接对硬件进行编程。本质上,它就是把c语言进行拆分,切成带有状态机和数据通路的verilog之后,再包装成ip,供其他模块使用。使用上其实十分方便,但是在使用的过程当中,还是有几点需要注意的,那就是有一些c语言特性其实没有办法进行综合处理的。
2025-07-30 04:30:42
661
1
原创 再谈fpga开发(c语言算法变成verilog代码)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在计算机专业课里面,一般不太专门谈算法。一部分算法其实是放在数据结构里面,还有一部分是放在数理逻辑里面的。不管是哪一种情况,算法本身其实还是非常重要的。哪怕是没有听过算法的同学,对排序查找肯定是比较熟悉的,比如说冒泡排序的复杂度o(n*),而快速排序的复杂度只有o(nlogn),这也是一种算法。从复杂度也看得出来,如果数据量不大的情况下,两个排序其实差不太多,但是一旦数据量变大之后,
2025-07-29 06:53:21
1082
原创 再谈fpga开发(怎么写verilog)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 如果你学fpga,很多人都会告诉你,verilog和c差不多。也就是说,如果有c的基础,学习verilog很容易。确实,verilog的语法不是很难。难的是后面思维模式。fpga里面写的其实不是verilog代码,而是后面的数字电路,即时序电路和逻辑电路。今天正好分析下,该怎么写verilog。
2025-07-28 04:43:35
603
1
原创 再谈fpga开发(fpga调试方法)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们之前在学校学习c、c++的时候,其实学校漏掉了很重要的一个教学环节,那就是调试、测试。很多时候我们代码写出来了,不知道怎么测试、调试。其实fpga也是一样的。fpga本质上还是信号的处理,我们与其说是写代码,不如说是设计电路。这个电路以寄存器和时序电路为基础,以组合电路为辅,通过状态机、协议和流程共同实现一个模块的开发。那么这个模块写的对不对,就需要通过调试来进行判别了。
2025-07-27 02:17:39
1086
原创 再谈fpga开发(fpga运行效率高的三大原因)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga其实大家都不陌生,大家都知道fpga介于软件和硬件之间,适合处理底层信号的东西,运算速度比较快。知道多一点的同学,可能还知道fpga可以同时处理多个数据。再多一点的东西,可能就不清楚了。fpga本身频率不高,200M都算是很高的频率了。因此,毋庸置疑,fpga的效率就是在于它的并发性。它的并发性主要是体现在下面三个地方。
2025-07-26 07:19:58
485
原创 再谈fpga开发(状态机的应用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面说过,fpga上面最基础的部分是寄存器,而所有寄存器存在每一个clock下,都有被翻转的可能性。至于这些寄存器是不是真的翻转,或者说是保持不变,取决于当时的状态。所以在clock运行的区间内,我们习惯于把任务切分成若干个状态,不同状态下的register是不一样的,当然只有一部分register参与工作,大部分保持不变。等到条件成熟的时候,再切换到下一个状态。这就是fpga下状态
2025-07-25 06:42:00
938
原创 再谈fpga开发(fpga开发的几个特点)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 学习嵌入式的同学都知道,嵌入式一般分成这几种chip,有51,有stm32 mcu,有soc,有dsp,有gpu,有npu,最后一种就是fpga。前面几种一般就是软件编程为主,应用也比较广,只有最后一种fpga,它的使用和前面几种差异很大,听说过的人多,用的人少。今天正好来聊一聊。
2025-07-24 06:36:20
864
原创 LVGL应用和部署(嵌入式项目管理)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 个人做嵌入式管理,不仅仅是代码的编写,还涉及到代码、文档和电路图的管理。因为涉及的内容比较多,所以还是建议大家在平时开发的时候,就养成合理管理项目的习惯。每一个项目都要去做好、管理好、服务好客户,这样才能持续推动项目的发展。那一般的项目,自己要如何管理呢?
2025-07-20 05:46:12
534
原创 LVGL应用和部署(个人开发嵌入式linux产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 随着经济越来越走向常态化发展,将来的公司基本是两个趋势,一个是公司越做越大,越来越趋向于垄断;另外一方面,公司越做越小,可能2-3个人就能开公司、做产品、搞营销。就拿linux来说,从前的linux soc开发可能很复杂,将来不管是芯片公司,还是硬件设计,其实一个人,多一点,1-2个人肯定是可以开发产品的。
2025-07-16 07:22:34
767
原创 LVGL应用和部署(设置进度条)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lvgl上面,进度条是一个非常有用的控件。如果是简单的应用,只需要按键和进度条就可以实现一个基本的产品。按键主要是设置参数和状态,而进度条则是反应结果。当然,实际编写的时候,也可以用label来表示当前的执行进度,不过还是没有进度条来的直观。今天,我们来看下,如果是进度条,应该如何实现。
2025-07-15 05:52:08
426
原创 LVGL应用和部署(学习和模仿产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 任何技术,本质上都是为了产品和项目服务的。从这一点上来说,不能一直漫无目的地去学习技术,因为技术本身是学习不完的。我们要做的,是把自己学到的东西实实在在用起来,看看自己的技术可以去解决什么实际的问题。而不是说,今天学习了A,明天去学习B,学习技术,如果不用起来,那是学生思维,并不是一个合理的市场行为。
2025-07-14 06:13:37
411
原创 LVGL应用和部署(用lua做测试)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 嵌入式产品做好了,下面就是测试和量产了。以按键+屏幕的开发模式为例,如果仅仅是简单的功能测试,那还比较好解决,只需要安排专门的测试人员,按照使用手册去做就可以了。但是如果是复杂测试,特别是压力测试,这个时候再靠人去测试,其实是不太现实的。所以,我们得依靠方法论、依靠工具去完成更复杂的测试,这样才能发现更深层次的问题。
2025-07-11 07:04:51
677
原创 LVGL应用和部署(用状态机做产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lvgl本身只是一个显示库,和qt本质是一样的。因为它比较小巧,占用资源不多,所以现在用的比较广泛。它自身支持触摸屏,也支持普通的屏幕。如果是触摸屏,相当于可以同时支持输入和输出,类似于pad产品。如果只是普通屏幕,那么通常需要和按键做呼应,这样一个输入、一个输出就很容易做成产品了。 实际开发的时候,我们通常都会使用状态机来开发。这个状态的改变,依赖于外部的输入。
2025-07-10 05:15:25
500
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人