必须拥有的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的有用脚本 |
| xpm | Xilinx可参数化的宏源代码 |
| 列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.sv | PRBS模式发生器或检查器 | |
| preview_fifo.sv | FIFO,能够一次性读取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 |