【verilog开源鉴赏】探索basic_verilog

260 阅读4分钟

必须拥有的Verilog SystemVerilog模块

最初作为 github.com/pConst/basi… 的一部分发布
由 Konstantin Pavlov 提供,电子邮件地址为 pavlovconst@gmail.com

您好!这是一个Verilog和SystemVerilog可综合模块的集合。

所有代码在典型的FPGA项目和主流FPGA供应商中都非常可重用。

如果您发现任何代码问题,请随时提交拉取请求或与我联系。

此外,如果您的项目——无论是业余爱好、科学研究还是工业项目——成功地使用了这些代码,请告诉我,这将给我带来快乐!

许可信息

代码采用CC BY-SA 4.0许可。 这意味着您可以为任何目的重新混合、转换和构建在材料上,甚至可以用于商业用途。 然而,您必须提供原作者的姓名,并且必须在与原始代码相同的许可下分发您的贡献。

内容描述

为了方便您,我已经根据它们的"难度"对一些资源进行了标记:

  • 🟢 - 用于最基本的任务
  • 🔴 - 用于高级或特殊用途的例程

如果您是硬件设计的初学者,您可能想先从标记为🟢的代码开始探索。 几乎每个源文件在仓库中都包含了详细的描述和实例化模板!

列1目录/DIRECTORY描述/DESCRIPTION
Advanced Synthesis Cookbook/Altera中的有用代码
KCPSM6_Release9_30Sept14/Xilinx的Picoblaze软处理器源代码
🔴XilinxBoardStore_with_Alveo_cards_support用于Xilinx Alveo加速卡的板卡定义
pacoblaze-2.2/适用于Altera设备的Picoblaze版本
avalon_mm_master_templates/来自Altera的Avalon-MM组件模板
axi_master_slave_templates/由Vivado生成的AXI组件模板
benchmark_projects/基准测试各种IDE,以编译完全相同的Verilog项目
dual_port_ram_templates/块RAM模板
example_projects/FPGA项目的样板和示例
gitignores/FPGA项目的gitignore文件
scripts/有用的TCL、批处理和shell脚本
🔴scripts_for_intel_hls/用于编译Intel HLS的有用脚本
🔴scripts_for_xilinx_hls/用于编译Xilinx HLS的有用脚本
xpmXilinx可参数化的宏源代码
列1文件/FILE描述/DESCRIPTION
adder_tree.sv并行地将多个值相加
axi4l_logger.sv监听所有AXI事务,并将地址和数据存储到FIFO
🟢bin2gray.sv组合格雷码到二进制转换器
bin2pos.sv将二进制编码的值转换为位置码(独热码)
cdc_data.sv标准两阶段数据同步器
cdc_strobe.sv用于单周期脉冲的时钟交叉同步器
🟢clk_divider.sv宽参考时钟分频器
clogb2.svh根据指定的向量/RAM深度计算计数器/地址宽度
🟢debounce.v输入按钮的两周期去抖动
🟢delay.sv用于制造静态延迟或跨时钟域同步的有用模块
delayed_event.sv生成一个时钟宽度的延迟脉冲
dynamic_delay.sv任意输入信号的动态延迟
🟢edge_detect.sv组合边沿检测器,在每个信号边沿给出一跳脉冲
encoder.v数字编码器输入逻辑模块
🔴fast_counter.sv合成计数器
fifo_combiner.sv从多个FIFO累积数据字到单个输出FIFO
fifo_operator.sv对来自多个FIFO的数据字执行自定义操作,并将结果存储到单个输出FIFO
🔴fifo_single_clock_ram_*.sv单时钟FIFO缓冲区(队列)实现
🔴fifo_single_clock_reg_*.sv单时钟FIFO缓冲区(队列)实现
🟢gray2bin.sv组合二进制到格雷码转换器
🔴gray_functions.vh可参数化的格雷码转换器函数
🟢hex2ascii.sv将4位二进制位组转换为8位人类可读的ASCII字符
leave_one_hot.sv仅留下最低热位的组合模块
lifo.sv单时钟LIFO缓冲区(栈)实现
main_tb.sv基本的测试台模板
moving_average.sv简单的移动平均实现
pack_unpack_array.v在Verilog-2001中打包和解包2D和3D向量的宏
pattern_detect.sv检测指定的数据模式
pdm_modulator.sv脉冲密度调制发生器模块
pos2bin.sv将位置码(独热码)值转换为二进制表示
prbs_gen_chk.svPRBS模式发生器或检查器
preview_fifo.svFIFO,能够一次性读取0、1或2个单词
priority_enc.sv组合优先级编码器
pulse_gen.sv生成具有给定宽度和延迟的脉冲
pulse_stretch.sv可配置的脉冲拉伸/扩展模块
pwm_modulator.sv脉冲宽度调制发生器
🔴read_ahead_buf.sv替代FIFO读端口,并在同一时钟周期执行FIFO数据更新
reset_set.sv无亚稳态状态的SR触发器变体,这里设置占主导地位
reset_set_comb.sv同步SR触发器,但具有组合输出
reverse_bytes.sv在多字节数组内反转字节顺序
reverse_dimensions.sv在SystemVerilog 2D向量中反转维度顺序
reverse_vector.sv在多位总线内反转信号顺序
round_robin_enc.sv循环组合编码器
round_robin_performance_enc.sv性能改进的循环编码器
set_reset.sv无亚稳态状态的SR触发器变体,这里复位占主导地位
set_reset_comb.sv同步SR触发器,但具有组合输出
sim_clk_gen.sv测试台时钟发生器
🔴soft_latch.sv组合数据保持电路
spi_master.sv通用spi主模块
🔴true_dual_port_write_first_2_clock_ram.sv双端口RAM/ROM模块
🔴true_single_port_write_first_ram.sv单端口RAM/ROM模块
uart_debug_printer.sv调试数据打印到UART终端
🟢uart_rx.sv简单直接的UART接收器
uart_rx_shifter.sv类似UART的接收器移位器,用于FPGA内部或FPGA之间的简单同步消息传递
🟢uart_tx.sv简单直接的UART发射器
uart_tx_shifter.sv类似UART的发射器移位器,用于F