HDL & FPGA 学习 - IP 模块收集,推荐书目,参考

目录

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 来定义未定义状态动作。
    • 推荐都使用三段式状态机。

    参考:


2.5 数字电路设计实用技术

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


3 参考

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

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

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值