- 博客(1451)
- 资源 (4)
- 收藏
- 关注
原创 Zynq开发实践(FPGA之pwm输出)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面我们学习了按键和led,虽然可以做一些基础的外设控制。比如假设把led换成卷帘门的话,这就是卷帘门开关了。当然,这里用mcu也可以,用带网络的gpio设备也可以,用fpga有点大才小用,过于奢侈了。今天我们学一下pwm输出,其实pwm在电机控制领域很有用。
2025-09-03 07:28:28
176
原创 Zynq开发实践(FPGA之流水线和冻结)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 谈到fpga相比较cpu的优势,很多时候我们都会谈到数据并发、边接收边处理、流水线这三个方面。所以,第三个优势,也就是流水线的概念,对大家来说其实并不陌生。而且大家如果学的是计算机科学与技术专业,那么肯定会学过计算机组成原理或者是计算机体系结构这些课程,里面谈到cpu设计的时候,也会涉及到流水线的概念。
2025-09-02 07:57:20
641
原创 Zynq开发实践(FPGA之状态机使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于一般的fpga开发,基本上就是总线协议+状态机开发。很多项目,之所以用fpga,而不用mcu,就是看中了fpga的实时处理。不然从性价比的角度里来说,mcu肯定是最合算的。只有对成本不是那么看重,并且对实时性要求很高的企业,才会用fpga,比如车辆、医疗、航空航天、军工等等。 因此,对这些低速访问,但是实时性要求高的行业,通常就是了解一些通用的协议,比如uart
2025-09-01 07:56:41
309
原创 Zynq开发实践(FPGA之平台免费IP)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和c语言平台提供posix api一样,一般fpga厂家也会提供各种各样免费的ip给客户使用。这样,客户就不需要自己去写每一个ip了,把重心放在自己的业务上就好了。这些免费的ip有的是关于频率的,有的关于存储的,有的关于总线的,有的关于计算的,还有的是关于dma的,大家可以先简单了解下。
2025-08-31 07:18:09
475
原创 Zynq开发实践(FPGA之输入、输出整合)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga开发的时候习惯上先把功能拆分成若干个模块。针对这些模块,一个一、个实现好之后,再用wire连接即可。这一点有点像软件编程的function。如果是规模不大的c项目,例如嵌入式mcu项目。我们也是先把项目拆分成若干个function,一个一个实现好function后,再用全局变量或者临时变量把这些function联系在一起,这样项目就可以拼起来了。fpga也是一样的。
2025-08-30 06:37:15
355
原创 Zynq开发实践(FPGA之按键输入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 led显示是数字电路中的输出部分,最简单的应用场景。那输入部分的话,就是按键。这样按键和led,就是最简单的输入和输出部分。很多开发板也是会以这两个case作为范例,来进行教学处理。这样学完之后,大家有一个基本的印象,即用fpga如何来描述输入输出电路。
2025-08-29 06:52:31
400
原创 Zynq开发实践(FPGA之闪烁led)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 数字电路的设计其实就在于时序逻辑的设计。如果电路设计中只有组合逻辑,没有时序逻辑,那么最多就是一个译码器。正式因为有了时序逻辑的存在,才有了存储,有了状态的概念,才能开发出各种协议以及丰富多彩的应用。因为这个时候的输出,不仅和当前输入有关系,还和当前的状态有关系,这就很有意义了。 当然,从学习的角度说,再简单的verilog代码也要自己写一写、测一测,不然我们以为自
2025-08-28 07:55:27
265
原创 Zynq开发实践(FPGA之组合逻辑、时序逻辑)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 整个数字电路里面,最重要的就是组合逻辑和时序逻辑。有了这两部分做基础,就可以做其他部分的功能了。学习数字电路的时候,主要介绍的内容也就是怎么用组合逻辑芯片、触发器芯片来构建基本数字电路。现在有了verilog之后,就不再需要我们真的去搭建数字电路,只需要我们用verilog去描述对应的数字电路就可以了。剩下来的工作完全可以通过quartus或者是vivado去完成即可。
2025-08-27 07:27:29
469
原创 Zynq开发实践(FPGA之verilog仿真)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们都知道,做fpga开发,可以用verilog,也可以用vhdl。开发完之后,如果需要实际验证,那么就可以综合一下,下载到fpga,看下效果。但是如果开发的内容比较多,或者开发的内容,是由很多人一起完成的,并且fpga验证平台也不多,这个时候应该怎么做呢?通常我们都是借助于verilog仿真来实现功能验证的。
2025-08-26 22:05:01
772
原创 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
741
1
原创 Zynq开发实践(FPGA高频使用的两个场景)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 本身fpga是介于纯软件和asic之间的元器件。如果是纯软件,那我们要做的,就是纯上层开发。只要相关驱动已经实现,那么我们对设备的处理,就是打开、关闭、读、写、控制这五个部分。至于底层是怎么实现的,我们完全不用管。还有一种就是asic,这类就是芯片开发的范畴,虽然fpga和asic一样,都是用verilog开发,但是两者的思路是完全不一样的。前者类似于搭积木,后面则是从0到1造房子。
2025-08-22 08:43:06
928
原创 Zynq开发实践(电路板部分)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于zynq的学习,在一开始电路板部分,建议一开始的时候不需要自己去开发板子。哪怕是自己可以绘制核心板,也不需要自己去做,花一点钱去买一个即可。我们应该把大部分时间放在ps+pl的学习上面。那么zynq的电路板一般是什么样的呢?
2025-08-21 06:50:12
287
原创 Zynq开发实践(开发准备)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 目前市场上面zynq的开发板很多,有7010,有7020,大家可以根据自己的需求灵活去选择。当然不仅仅是开发板,连接线、串口、usb hub这些部分,最好也要准备下。除了硬件之外,就是软件安装,zynq使用到的vivado很大,安装有点麻烦。如果使用到linux的话,还需要安装linux版本的vivado,这也是需要注意的。
2025-08-20 06:27:10
454
原创 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
854
原创 产品开发实践(容易犯的几个错误)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 不管是为了兴趣爱好,还是为了后期的个人发展,技术学习到一定程度的时候,就想自己做个产品。看看有没有机会推广一下,甚至看看有没有商业发展的可能性。能思考到这一点,其实是非常难得可贵的。那接下来如何去做,就是一个大问题。很多时候方向都是没有问题的,问题是如何落地,如何去实施。虽然说条条大路通罗马,但是实践过程中,还是会出现一些问题,这里简单总结下。
2025-08-17 17:18:30
373
原创 产品开发实践(常见的软硬结合方式)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面说过,传统的纯软件开发,在国内的大背景下面是很难存活的。但是如果是把软件,构建在硬件基础之上,并且在上面形成一定的优势,这样的产品是可以销售出去的。当然,软硬结合的方式很多,今天就来谈一谈。
2025-08-15 08:12:45
574
原创 产品开发实践(开篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 同样一个技术,可以应用在不同的产品上面,这是非常常见的事情。这就好比是刚从大学毕业的时候,两个人的基础可能差不多,但是若干年之后,两人的发展大相径庭。这里面有一部分是专业的原因,还有一部分就是产品和行业的原因。哪怕是相同的技术,由于身处不同的行业和平台,发展还是会显示出巨大差别的。作为个体来说,经过一段时间的沉积之后,应该从学什么,慢慢向做什么开始转变。
2025-08-11 07:12:28
399
原创 再谈fpga开发(总结篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和asic芯片相比,fpga具有很强的灵活性。不管是信号处理领域,还是算法定制领域都有很大的用处。但是fpga有一个很大的缺点,那就是价格问题。因为一个应用如果变成了通用产品,那么必然asic化,而规模化的asic芯片,无论在性能还是在成本上都有很大的优势。这就让fpga只能用在高频、实时、价格不敏感的领域,比如说航空、轨道交通、军工、医疗,这些都是属于价格没那么敏感的领域。纯消费类
2025-07-31 06:09:06
1131
原创 再谈fpga开发(不能转成verilog的c语言特性)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 用过vivado的同学都知道,vivado里面有一个hls工具,也就是用高层语言直接对硬件进行编程。本质上,它就是把c语言进行拆分,切成带有状态机和数据通路的verilog之后,再包装成ip,供其他模块使用。使用上其实十分方便,但是在使用的过程当中,还是有几点需要注意的,那就是有一些c语言特性其实没有办法进行综合处理的。
2025-07-30 04:30:42
651
1
原创 再谈fpga开发(c语言算法变成verilog代码)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在计算机专业课里面,一般不太专门谈算法。一部分算法其实是放在数据结构里面,还有一部分是放在数理逻辑里面的。不管是哪一种情况,算法本身其实还是非常重要的。哪怕是没有听过算法的同学,对排序查找肯定是比较熟悉的,比如说冒泡排序的复杂度o(n*),而快速排序的复杂度只有o(nlogn),这也是一种算法。从复杂度也看得出来,如果数据量不大的情况下,两个排序其实差不太多,但是一旦数据量变大之后,
2025-07-29 06:53:21
1064
原创 再谈fpga开发(怎么写verilog)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 如果你学fpga,很多人都会告诉你,verilog和c差不多。也就是说,如果有c的基础,学习verilog很容易。确实,verilog的语法不是很难。难的是后面思维模式。fpga里面写的其实不是verilog代码,而是后面的数字电路,即时序电路和逻辑电路。今天正好分析下,该怎么写verilog。
2025-07-28 04:43:35
596
1
原创 再谈fpga开发(fpga调试方法)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 我们之前在学校学习c、c++的时候,其实学校漏掉了很重要的一个教学环节,那就是调试、测试。很多时候我们代码写出来了,不知道怎么测试、调试。其实fpga也是一样的。fpga本质上还是信号的处理,我们与其说是写代码,不如说是设计电路。这个电路以寄存器和时序电路为基础,以组合电路为辅,通过状态机、协议和流程共同实现一个模块的开发。那么这个模块写的对不对,就需要通过调试来进行判别了。
2025-07-27 02:17:39
1079
原创 再谈fpga开发(fpga运行效率高的三大原因)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 fpga其实大家都不陌生,大家都知道fpga介于软件和硬件之间,适合处理底层信号的东西,运算速度比较快。知道多一点的同学,可能还知道fpga可以同时处理多个数据。再多一点的东西,可能就不清楚了。fpga本身频率不高,200M都算是很高的频率了。因此,毋庸置疑,fpga的效率就是在于它的并发性。它的并发性主要是体现在下面三个地方。
2025-07-26 07:19:58
480
原创 再谈fpga开发(状态机的应用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面说过,fpga上面最基础的部分是寄存器,而所有寄存器存在每一个clock下,都有被翻转的可能性。至于这些寄存器是不是真的翻转,或者说是保持不变,取决于当时的状态。所以在clock运行的区间内,我们习惯于把任务切分成若干个状态,不同状态下的register是不一样的,当然只有一部分register参与工作,大部分保持不变。等到条件成熟的时候,再切换到下一个状态。这就是fpga下状态
2025-07-25 06:42:00
930
原创 再谈fpga开发(fpga开发的几个特点)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 学习嵌入式的同学都知道,嵌入式一般分成这几种chip,有51,有stm32 mcu,有soc,有dsp,有gpu,有npu,最后一种就是fpga。前面几种一般就是软件编程为主,应用也比较广,只有最后一种fpga,它的使用和前面几种差异很大,听说过的人多,用的人少。今天正好来聊一聊。
2025-07-24 06:36:20
859
原创 LVGL应用和部署(嵌入式项目管理)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 个人做嵌入式管理,不仅仅是代码的编写,还涉及到代码、文档和电路图的管理。因为涉及的内容比较多,所以还是建议大家在平时开发的时候,就养成合理管理项目的习惯。每一个项目都要去做好、管理好、服务好客户,这样才能持续推动项目的发展。那一般的项目,自己要如何管理呢?
2025-07-20 05:46:12
525
原创 LVGL应用和部署(个人开发嵌入式linux产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 随着经济越来越走向常态化发展,将来的公司基本是两个趋势,一个是公司越做越大,越来越趋向于垄断;另外一方面,公司越做越小,可能2-3个人就能开公司、做产品、搞营销。就拿linux来说,从前的linux soc开发可能很复杂,将来不管是芯片公司,还是硬件设计,其实一个人,多一点,1-2个人肯定是可以开发产品的。
2025-07-16 07:22:34
761
原创 LVGL应用和部署(设置进度条)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lvgl上面,进度条是一个非常有用的控件。如果是简单的应用,只需要按键和进度条就可以实现一个基本的产品。按键主要是设置参数和状态,而进度条则是反应结果。当然,实际编写的时候,也可以用label来表示当前的执行进度,不过还是没有进度条来的直观。今天,我们来看下,如果是进度条,应该如何实现。
2025-07-15 05:52:08
395
原创 LVGL应用和部署(学习和模仿产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 任何技术,本质上都是为了产品和项目服务的。从这一点上来说,不能一直漫无目的地去学习技术,因为技术本身是学习不完的。我们要做的,是把自己学到的东西实实在在用起来,看看自己的技术可以去解决什么实际的问题。而不是说,今天学习了A,明天去学习B,学习技术,如果不用起来,那是学生思维,并不是一个合理的市场行为。
2025-07-14 06:13:37
409
原创 LVGL应用和部署(用lua做测试)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 嵌入式产品做好了,下面就是测试和量产了。以按键+屏幕的开发模式为例,如果仅仅是简单的功能测试,那还比较好解决,只需要安排专门的测试人员,按照使用手册去做就可以了。但是如果是复杂测试,特别是压力测试,这个时候再靠人去测试,其实是不太现实的。所以,我们得依靠方法论、依靠工具去完成更复杂的测试,这样才能发现更深层次的问题。
2025-07-11 07:04:51
670
原创 LVGL应用和部署(用状态机做产品)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 lvgl本身只是一个显示库,和qt本质是一样的。因为它比较小巧,占用资源不多,所以现在用的比较广泛。它自身支持触摸屏,也支持普通的屏幕。如果是触摸屏,相当于可以同时支持输入和输出,类似于pad产品。如果只是普通屏幕,那么通常需要和按键做呼应,这样一个输入、一个输出就很容易做成产品了。 实际开发的时候,我们通常都会使用状态机来开发。这个状态的改变,依赖于外部的输入。
2025-07-10 05:15:25
488
原创 LVGL应用和部署(和物理按键交互)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 屏幕除了显示部分,还要去和其他外设进行交互,这是非常重要的一个处理方法。我们知道,不管是mcu,还是linux soc,最重要的处理方法就是状态机。而状态机的很重要一个切换条件就是外部输入,这个输入有可能是触屏输入,有可能是按键输入。通常而言,触屏输入是最直接的处理方法。不过触屏输入成本稍微高一点,所以很多客户就会选择普通的屏幕显示,再加上物理按键的办法实现人机交互。
2025-07-09 06:40:58
503
原创 LVGL应用和部署(中文翻译)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 所有的界面开发包都会面临一个翻译的问题,也就是说,软件除了提供基本的界面操作之外,还需要提供一个语言包。在这个翻译当中,翻译成中文是最基本的操作。如果产品涉及到出口,比如出口到东南亚、出口到日韩、出口到西欧和中东,那么翻译的内容还需要更多一些。不失一般性,在lvgl下面,翻译一般是这么来做的。
2025-07-08 05:47:48
350
原创 LVGL应用和部署(倒计时软件)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 图形界面当中,定时器是一个绕不过去的槛。不管是windows的mfc,还是跨平台的qt软件,定时器都是很重要的一个环节。如果写的是工具软件,功能不是很复杂,那么单线程+定时器其实是非常好的一种实现方式。很多的功能其实都是可以通过定时轮询的方式来解决的。而在stm32这样的mcu上,定时中断更是主要的开发方式。
2025-07-07 08:30:20
332
原创 LVGL应用和部署(创建自定义子窗口)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 昨天我们谈到了消息对话框,但是在实际应用当中,模式对话框是一种更为常见的概念。所谓的模式对话框,其实就是子窗口。消息窗口,一般sdk有专门的api来创建。而子窗口,则是自己设计和创建的。但是在lvgl上面,没有子窗口的概念,每一个控件都是独立的。所以,我们其实可以通过层的概念,或者说的通俗一点,就是用套娃的概念来实现子窗口。
2025-07-06 07:32:38
649
原创 LVGL应用和部署(添加消息窗口)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 昨天我们做了一个乘法的小软件。这个软件里面,有两个乘数,并且有两个输入框。这两个输入框,在我们输入数据之后,就可以通过按下按钮的方式获得最终的结果。当时为了偷懒,我们就把结果直接显示在按钮之上了。今天我们换一种更为常规的方式,也是弹出消息窗口,把结果弹出到消息框之上,这种方式更为合理和直观。
2025-07-05 07:22:57
420
原创 LVGL应用和部署(乘法计算小软件)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多同学还是学生思维,学习一个新东西的时候,都是按部就班的,从书的第一页翻到最后一页,从第一个视频看到最后一个视频,从code的第一行学到最后一行。这样,翻一遍下来,基本上也忘光了。其实,这是效率比较低的一个办法。最好的学习方法,就是理论和实践相结合,根据自己的需求,动手去做,在掌握好基础的基础之上,用到什么学什么,这是效率最高的。
2025-07-04 07:31:56
543
原创 LVGL应用和部署(第一次调试lvgl)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多同学喜欢看代码,但是不太喜欢上手去实践。这其实是不对的。对于软件开发,或者是嵌入式开发来说,学习最快的方式,还是理论和实际相结合。既然我们昨天已经利用windows+vs2019实现了lvgl的运行,那么就可以好好利用这个仿真平台来开始调试lvgl。只要好好利用好了这个平台,至于lvgl是运行在仿真环境下面,还是真实的嵌入式环境下面,其实都是可以的。
2025-07-03 06:50:23
471
原创 LVGL应用和部署(编译测试)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 学习一门新的技术,除了知道它的基本原理之外,下面就应该是具体的实操部分。对于计算机软件或者是硬件开发来说,尤其是如此。前面我们说过,lvgl本身就是一个中间件,和lwip、freertos、ucgui本质上是一样的。所以,这里我们也可以不让lvgl跑在具体的嵌入式平台上,借助于windows仿真环境,同样可以让lvgl运行起来。所以,今天编译的环境就是windows+vs2019。
2025-07-02 07:38:26
571
原创 LVGL应用和部署(学习和使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 一般认为lvgl主要是用在mcu上面,用在soc上面有,但是不多。linux soc部分,主要还是qt为主。但是相比较qt而言,lvgl还是有一个巨大的优势,那就是开源、免费。这一点在国内,可能优点不是那么突出,但是一旦涉及到出口,这还是非常敏感的一个话题。特别是如果销售金额比较大的话,那么所有基础软件的合法性问题,都是绕不过去的一个槛。
2025-06-29 08:41:15
622
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人