目录

2 模块收集(不定期更新)

2.5 数字电路设计实用技术

3 参考

编辑整理 by Staok,始于 2021.2 且无终稿。转载请注明作者及出处。整理不易,请多支持。

本文件是“瞰百易”计划的一部分,尽量遵循“二项玻”定则,致力于与网络上碎片化严重的现象泾渭分明!

本文系广泛撷取、借鉴和整理,适合刚入门的人阅读和遵守,已经有较多经验的人看一看图个乐,如有错误恭谢指出!本文已经是长期积累和堆叠而形成一定规模,不必按照从前到后的顺序去看,可以挑感兴趣的章节去看。

本文为简述风格,本意即记录要点和便于快速拾起。

本文对应的 Github/Gitee 仓库地址,本文最新的原文 和 一些源码、备查手册等等 均放在里面。

2 模块收集

p.s 以下为列举日常项目中用到的可以开源的部分模块源码(Verilog or VHDL)或者实现思想(就是留个坑,但还没写)。

Github 上有哪些优秀的 Verilog/FPGA 项目? 有很多好的推荐项目和回答! WangXuan95 (WangXuan95) / Repositories (github.com) 开源了许多 Verilog IP。 Alex Forencich 的 GitHub 主页 开源了许多 Verilog IP,Verilog IP cores - Alex Forencich。 FreeCores (github.com) A home for open source hardware cores。 pConst / basic_verilog 的常用代码。 文件位置:./pConst 的 basic_verilog-master.zip Analog Devices, Inc。 OpenCores。在这个网站上可以看到各种经过工程师验证过的内核,比如8051、OpenRisc、AVR、MIPS32等。 李锐博恩 Verilog编程实例。 NingHeChuan 的 ip_lib ——构建自己的IP库,搭建起你的数字积木。 文件位置:./FPGA学习和规范 的参考源码/NingHeChuan 的 ip_lib/ 类MCU的时间片轮询实现,晶振时钟通过PLL IP得到准确时钟,每个PLL有五个输出,分别分频得到运行周期为 10MHz、5MHz、1MHz、1KHz、100Hz的程序的入口,把不同功能的程序直接放在想要按照某个周期运行的程序入口即可。这个直接写到模板的Top文件即可,不用作为一个模块。 根据寄存器或者外部引脚的电平组合等信息,可以在运行时任设或者有限改动FPGA内部逻辑的输出引脚,就像STM32的外设引脚切换或者K10的FPIOA一样允许用户将255个内部功能映射到芯片外围的48个自由IO上。 按键消抖 思想:当“按键可以检测标志位”有效时,按下的边沿触发启动一计数器,同时标记“按键可以检测标志位”失效,当计数器计数到一定值后,再检测按键是否处于按下状态,如果是则标记“按键有效”标志位做输出,如果不是则停止计数,同时标记“按键可以检测标志位”有效,同时清空计数值。 sopc 读取外部按键设计思路,引脚输入后先在FPGA的逻辑上先实现一个去抖,然后把无毛刺的稳定的信号传给 nios ii 输入脚,然后 nios ii 里面实现一个外部引脚沿中断。 文件位置:./FPGA学习和规范 的参考源码/按键消抖/ 特定序列检测与发送 思想:用 case 语句实现简单的一段状态机即可。 PWM信号产生 思想:占空比值与一个向上计数器计数值比较,当占空比值比计数值大时输出高电平,小时输出低电平。 参考“小梅哥 AC620V2开发板配套资料”的无源蜂鸣器章节和例程。 I2C模块 小梅哥 FPGA进阶 第十六章 IIC协议详解+UART串口读写EEPROM SPI模块 择时更新,交流可催更 UART模块 看《FPGA设计-实战演练(逻辑篇)》 吴厚航 的随书源码。(@TODO 不过这个程序的最外层还不够明朗,需要再整理简化使用) 状态机 注意点:

关键是画好状态图;状态完备;组合逻辑条件完备;不能进入死循环;不能进入非预知状态。需要穷举所有状态对应的输出动作,或者使用 default 来定义未定义状态动作。推荐都使用三段式状态机。参考:

文件位置:./FPGA学习和规范 的参考源码/fsm/三种状态机 基于FPGA的有限状态机浅析三段式状态机 万物基于状态机——状态机大法好三段式状态机 【BUG记录】三段式状态机编写问题及三段式状态机各部分功能分析 …

2.5 数字电路设计实用技术

《硬件架构的艺术:数字电路的设计方法与技术》,该书的译者序:“…实用且有效…作者系统打造出一栋由实用技术组成的大厦……一切从解决问题出发,解释怎么做,并给出原理图和代码,以及解决方案……本书主要内容涉及时钟和复位、多时钟域设计、时钟分频器、低功耗设计技术、流水线技术、字写顺序、消抖技术和电磁兼容性等内容”。该书针对以上方面给出了很多设计策略和实用方法,或者说对很多模块的设计给出了推荐的 HDL 和电路,适合当作工具书手办阅读。该书罗列了很多应该避免的有隐患的(甚至仿真的时候不容易发现而实际运行时候容易出问题的种种情况)综合后的数字逻辑电路,并由此给出了很多应该避免的 HDL 写法,以及查看综合后电路是否有已知的隐患;并也给出了推荐的数字电路形式。该书在网上容易下载到电子版。

3 参考

p.s 本文一部分来自自己总结的经验,一部分来自参考。参考不是照搬,是选择我认为的精髓,每个人不同,所以推荐看一下这些参考,TA们都提供了很好的技巧。当然也许还有很多更好的资料,可以留言推荐。

p.s 正文中某些段落内容的旁边已经加注了参考和引用源,这里列出剩下的引用源。

《FPGA设计-实战演练(逻辑篇)》 吴厚航 在“资源下载”栏可下载随书课件和源码。知乎 硅农。Verilog设计的原则和技巧和IP核的使用。《基于FPGA的嵌入式开发与应用(徐光辉 程东旭 等编著)》。还可以参考但还没看的:

《FPGA设计-实战演练(高级技巧篇)》王敏志。……

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: