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

相关推荐
IM_DALLA5 小时前
【Verilog学习日常】—牛客网刷题—Verilog进阶挑战—VL25
学习·fpga开发·verilog学习
辣个蓝人QEX6 小时前
【FPGA开发】Modelsim如何给信号分组
fpga开发·modelsim·zynq
li星野9 小时前
ZYNQ:点亮LED灯
fpga开发·zynq·7010
9527华安9 小时前
FPGA实现PCIE视频采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持
fpga开发·音视频·pcie·xdma·ov5640·hdmi
乌恩大侠10 小时前
【Xcode Command Line Tools】安装指南
macos·fpga开发·c
apple_ttt11 小时前
从零开始讲PCIe(9)——PCIe总线体系结构
fpga开发·fpga·pcie
Little Tian14 小时前
信号用wire类型还是reg类型定义
fpga开发
XiaoChaoZhiNeng1 天前
基于Zynq SDIO WiFi移植二(支持2.4/5G)
5g·fpga·zynq·sdio
apple_ttt1 天前
从零开始讲PCIe(6)——PCI-X概述
fpga开发·fpga·pcie
水饺编程1 天前
【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-2
linux·嵌入式硬件·fpga开发