|
发表于 2024-1-25 01:12:49
|
显示全部楼层
从github上弄的一个东西“
## 描述
gen_apb_file是一种开源的寄存器文件解决方案,包括中心化的寄存器描述文件(Excel格式)和相应的寄存器文件生成脚本,能够快速生成寄存器硬件模块、ralf模型、c语言头文件。主要有以下特性:
- 支持APB接口类型
- 寄存器位宽可配
- 支持25种寄存器存取类型[<sup>[2]</sup>](#refer-anchor-2)(见下表)
- 可生成verilog
- 可生成ralf
- 可生成c header
- 支持多个模块
尚待改进的地方如下:
- 未支持语义检查
- c header未包括域的信息
|NO |ACCESS |DESCRIPTION|
|---|---|---|
1|RO|读写此域都无影响|
2|RW|会尽量写入,读取时对此域无影响|
3|RC|写入时无影响,读取时会清零|
4|RS|写入时无影响,读取时会设置所有的位|
5|WRC|尽量写入,读取时会清零|
6|WRS|尽量写入,读取时会设置所有的位|
7|WC|写入时会清零,读取时无影响|
8|WS|写入时会设置所有的位,读取时无影响|
9|WSRC|写入时会设置所有的位,读取时会清零|
10|WCRS|写入时会清零,读取时会设置所有的位|
11|W1C|写1清零,写0时无影响,读取时无影响|
12|W1S|写1设置所有的位,写0时无影响,读取时无影响|
13|W1T|写1入时会翻转,写0时无影响,读取时无影响|
14|W0C|写0清零,写1时无影响,读取时无影响|
15|W0S|写0设置所有的位,写1时无影响,读取时无影响|
16|W0T|写0入时会翻转,写1时无影响,读取时无影响|
17|W1SRC|写1设置所有的位,写0时无影响,读清零|
18|W1CRS|写1清零,写0时无影响,读设置所有位|
19|W0SRC|写0设置所有的位,写1时无影响,读清零|
20|W0CRS|写0清零,写1时无影响,读设置所有位|
21|WO|尽可能写入,读取时会出错|
22|WOC|写入时清零,读取时出错|
23|WOS|写入时设置所有位,读取时会出错|
24|W1|在复位(reset)后,第一次会尽量写入,其他写入无影响,读取时无影响|
25|WO1|在复位后,第一次会尽量写入,其他的写入无影响,读取时会出错|
## 安装
依赖python及xlrd
- `sudo apt-get install python`
- `pip install xlrd`
## 用法
- `python gen_apb_file.py template.xls`
注:
1. 工作簿template.xls中的名称template不会体现在生成文件中,你可以将它改成任何名称如芯片名称。
2. 工作表<sheet_name>名称tmplmd,xuartlite[<sup>[3]</sup>](#refer-anchor-3)为功能模块的名称,运行脚本会根据每一个工作表生成<sheet_name>_apb_cfg.v、<sheet_name>.h,<sheet_name>.ralf
gen_apb_file-main.zip
(524.18 KB, 下载次数: 42 )
|
|