Verilog常用可综合IP模块库-新增

2022-04-14 10:39:39 浏览数 (1)

优秀的 Verilog/FPGA开源项目介绍(二十)- Verilog常用可综合IP模块库-新增

想拥有自己的Verilog IP库吗?设计时一个快捷键就能集成到自己的设计,酷炫的设计你也可以拥有!

每个公司应该都会维护属于自己公司风格的IP库,作为个人学习或者持续使用的方式,这种方法很有用。今天肯定不是分享我司的IP库,而是一个开源库,每个人都可以使用、维护或者修改,当然作为学习(多人维护)也是不可多得的资料。把该库集成到自己常用的文本编辑器(SublimeVScodeVim等等)可以很快完成代码设计。

Verilog常用可综合IP模块库

简介

该库是用标准 Verilog (2005) 编写的,包含超过 25,000 行 Verilog 代码,超过 150 个单独的模块。功能示例包括:FIFO、SPI(主/从)、GPIO、高速链路、存储器、时钟电路、同步原语、中断控制器、DMA。

工程链接

❝https://github.com/aolofsson/oh、

详细介绍

文件夹外的文件根据文件名很容易判断其用途,下面着重介绍文件夹内部文件:

FOLDER

STATUS

DESCRIPTION

accelerator

FPGA

Accelerator tutorial

axi

FPGA

AXI master and slave interfaces

chip

SI

Chip design reference flow

common

SI

Library of basic components

edma

HH

DMA engine

elink

SI

Point to point LVDS link

emailbox

FPGA

Mailbox with interrupt output

emesh

SI

Emesh interface circuits

emmu

FPGA

Memory translation unit

etrace

HH

Logic Analyzer

gpio

HH

General Purpose IO

mio

HH

Lightweight parallel link

pic

SI

Interrupt controller

parallella

FPGA

Parallella FPGA logic

risc-v

HH

RISC-V implementation

spi

HH

SPI master/slave

xilibs

FPGA

Xilinx simulation models

...

...

...

NOTES:

"SI"= Silicon validated

"FPGA" = FPGA validated

"HH" = Hard hat area (work in progress)

这里还有编码指南,再简单介绍一下:

  • 每行最多 80 个字符
  • 每行一个输入/输出语句
  • 只有单行 // 注释,没有 / .. /
  • 在每个语句中使用向量大小,即“assign a[7:0] = myvec[7:0];”
  • 使用可重用性和可读性的参数
  • 使用许多简短的陈述代替一个大的陈述
  • 避免多余的 begin..end 语句
  • 大写宏和常量
  • 对所有信号名称使用小写
  • 所有参数和常量的用户大写
  • 使用 y 到 x 向量
  • 对常量使用`include 文件
  • 使用 `ifndef _CONSTANTS_V 仅包含一次文件
  • 设计文件中没有时间尺度(仅在测试台中)
  • 设计中没有延迟声明
  • 顶层设计结构中没有逻辑语句
  • 首选参数代替全局定义
  • 不要使用 casex
  • 避免大量嵌套的 if、else 语句
  • 每 5-20 行放置一个有用的注释
  • 仅使用可综合的构造
  • 使用 $signed() 对有符号类型进行算术运算。
  • 允许的关键字:assign、always、input、output、wire、reg、module、endmodule、if/else、case、casez、~、|、&、^、==、>>、<<、>、<、?、 posedge, negedge, generate, for(...), begin, end, $signed,
  • 。。。。

总结

今天介绍了《Verilog常用可综合IP模块库》另一个项目

前一个项目地址:

❝https://github.com/pConst/basic_verilog

这类项目可以给大家提供一个思路尤其对于没有工作或者刚入门不久的同行,自己在编写代码时要想着可继承性,这样在以后做类似项目时可以借用,并且长期维护一个代码对于这个模块的理解有很大帮助。

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

0 人点赞