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

目录

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

[2.5 数字电路设计实用技术](#2.5 数字电路设计实用技术)

[3 参考](#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 正文中某些段落内容的旁边已经加注了参考和引用源,这里列出剩下的引用源。

相关推荐
神电测控8 小时前
新品发布:国产新型三合一多功能PG-ZYNQ7100 sbRIO板卡(PCIe+USB3.0+Ethernet+FMC+4个40pin扩展口)
fpga·zynq·crio·神电测控·王电令·sbrio·linuxrt
ALINX技术博客1 天前
ALINX 亮相 2026 WAIC 世界人工智能大会,展示 AI 视觉 FPGA+GPU 异构计算与电子后视镜解决方案
人工智能·ai·fpga·世界人工智能大会·电子后视镜
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20202 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
Eloudy3 天前
RFSoC 4x2 参考手册
fpga