5

学fpga(先自顶而下设计,再自下而上集成)

 2 years ago
source link: https://blog.csdn.net/feixiaoxing/article/details/124079896
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

学fpga(先自顶而下设计,再自下而上集成)

费晓行 已于 2022-04-10 16:38:36 修改 528

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面讨论一下led流水灯的显示、按键的触发这两个模块。等真正做一个项目的时候,应该怎么处理呢?一般先按照自顶而下的方法进行需求切分,然后把每一个子模块做好了之后,再进自下而上的集成处理。

        考虑到之前讨论的流水灯和按键,可以假设有这么一个需求。当按键按下的时候,流水灯开始运行。当按键再次按下的时候,流水灯结束。等第三次按键按下的时候,流水灯再次开始循环。

        初次拿到这个需求的时候,第一步要做的就是确认功能和输入、输出。

         等完成了第一步之后,下面要做的就是进行模块切分。模块切分需要依赖于自己的经验。这个有点类似于做数学题。一开始拿到的题目总是很难的,我们要做得就是把这个问题变成一个一个学过得知识点,这些知识点就是过去积累的经验。因为我们学过led流水灯这些,所以很自然地拆分成两个模块。

         有了这一步模块得拆分之后,当然后面就是key模块、led模块的实现了。等到实现之后,需要对key模块、led模块进行分别测试,测试之后就可以开始自底向上的整合了。verilog上面,就是把各个模块进行例化,拼凑在一起,比如像这样,

        关于这部分,其实和c语言里面的main函数很相。同样是这一个需求,大家可以思考一下,是不是也是这么一个流程。先进行模块拆分,每一个模块用不同的函数完成,等模块测试之后,再进行模块集成整合,等到确认没有问题了,就可以说功能开发成功了。

        在运行机理上面,fpga和c编程可能差别蛮大。但是开发流程上面,两者有很大的相似性。有c语言编程经验的同学,完全可以把这个经验方便地移植到fpga开发上面,相信会有很多意外的收获。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK