fix README

This commit is contained in:
Zihao Yu 2022-02-18 09:30:48 +08:00
parent 4223ab0a6b
commit cd1db11aa7
3 changed files with 28 additions and 29 deletions

View File

@ -1,10 +1,10 @@
# nvboard
# NVBoard
#### 介绍
## 介绍
nvboard是基于SDL开发的虚拟FPGA开发板可以在Verilator仿真环境中模拟FPGA支持RGB LED七段数码管开关键盘和VGA。
NVBoard(NJU Virtual Board)是基于SDL开发的虚拟FPGA开发板可以在Verilator仿真环境中模拟FPGA支持LED七段数码管开关键盘和VGA。
#### 软件架构
## 软件架构
软件架构说明
@ -25,11 +25,11 @@ nvboard是基于SDL开发的虚拟FPGA开发板可以在Verilator仿真环境
│   ├── render.h
│   └── vga.h
├── LICENSE
├── Makefile NVBOARD项目构建makefile
├── pic NVBOARD图片信息
├── Makefile NVBoard项目构建Makefile
├── pic NVBoard图片信息
├── README.en.md
├── README.md
└── src NVBORAD源码
└── src NVBorad源码
├── component.cpp
├── event.cpp
├── nvboard.cpp
@ -37,28 +37,28 @@ nvboard是基于SDL开发的虚拟FPGA开发板可以在Verilator仿真环境
└── vga.cpp
```
#### 安装教程
## 安装教程
1. 将项目拷贝到本地,`git clone https://github.com/NJU-ProjectN/nvboard.git`
2. 接下来,把本项目的目录设置成环境变量 `NVBOARD_HOME`
#### 示例
## 示例
本项目下的emu是一个演示项目在该目录下通过 `make run` 命令可运行该项目。
### 使用说明
## 使用说明
#### 编写C++文件
### 编写C++文件
NVBoard提供了以下几组API
- nvboard_init: 初始化nvboard
- nvboard_quit: 退出nvboard
- nvboard_bind_pin(pin, signal): 将HDL的信号signal连接到nvboard里的引脚pin上
- nvboard_update: 更新NVBoard中各组件的状态每当电路状态发生改变时都需要调用该函数
- `nvboard_init()`: 初始化NVBoard
- `nvboard_quit()`: 退出NVBoard
- `nvboard_bind_pin(pin, signal)`: 将HDL的信号signal连接到NVBoard里的引脚pin上
- `nvboard_update()`: 更新NVBoard中各组件的状态每当电路状态发生改变时都需要调用该函数
为了方便进行信号的绑定,可以在你的项目目录下编写约束文件(.cons),通过命令 `make cons` 能够依据编写的约束文件生成c++文件,
调用该文件中的 `nvboard_bind_pins`函数即可完成所有信号的绑定。约束文件的格式如下所示
为了方便进行信号的绑定,可以在你的项目目录下编写约束文件(.cons),通过命令`make cons`能够依据编写的约束文件生成c++文件,
调用该文件中的`nvboard_bind_all_pins(dut)`函数即可完成所有信号的绑定。约束文件的格式如下所示
```
top=top_name
@ -68,14 +68,14 @@ signal pin
signal (pin1,pin2,... pink)
```
在约束文件的开头,需要指定指定顶层模块名为top_name。约束文件支持两种信号绑定方式`signal pin`表示将顶层模块的signal信号绑定到引脚pin上
`signal (pin1,pin2,...,pink)`表示将顶层模块的signal信号的每一位从高到低依次绑定到 `pin2,pin1,...,pink`上。
在约束文件的开头,需要指定顶层模块名为`top_name`。约束文件支持两种信号绑定方式,`signal pin`表示将顶层模块的`signal`端口信号绑定到引脚`pin`上,
`signal (pin1,pin2,...,pink)`表示将顶层模块的`signal`信号的每一位从高到低依次绑定到`pin1,pin2,...,pink`上。
可以查看在该项目的board目录下的板卡配置文件中查看NVBoard的引脚信息。
可以在该项目的board目录下的板卡配置文件中查看NVBoard的引脚信息。
##### 编写makefie
### 编写makefile
你可以在任意运行在NVBOARD的项目目录下编写makefilemakefile格式如下
你可以在任意运行在NVBoard的项目目录下编写makefilemakefile格式如下
```makefile
# 需要手动指定项目目录
@ -88,12 +88,11 @@ DIR = .
# 需要指定顶层模块名称
TOPNAME = top
# 需要在最后将NVBOARD的makefile包含进来
# 需要在最后将NVBoard的makefile包含进来
-include $(NVBOARD_HOME)/Makefile
```
##### 体验NVBoard
### 体验NVBoard
最后,你只需要在项目目录下执行
@ -101,8 +100,8 @@ TOPNAME = top
make run
```
命令即可在NVBOARD上模拟运行你自己的verilog代码
命令即可在NVBoard上模拟运行你自己的verilog代码
#### 特技
## 特技
1. 可以用 `include/configs.h`选择贴图让自己的虚拟FPGA开发板更有特色贴图放在 `pic`目录下;

View File

@ -11,7 +11,7 @@ void nvboard_bind_pins(Vtop* top);
int main() {
nvboard_bind_pins(&dut);
nvboard_bind_all_pins(&dut);
nvboard_init();
while(1){

View File

@ -76,7 +76,7 @@ def bind_vec_pins(f, inout, signal, pins):
def init_info(f, top):
write_dep(bind_f, "#include <nvboard.h>\n#include \"V" + top + ".h\"\n\nvoid nvboard_bind_pins(V" + top + "* top){\n")
write_dep(bind_f, "#include <nvboard.h>\n#include \"V" + top + ".h\"\n\nvoid nvboard_bind_all_pins(V" + top + "* top){\n")
dep = 0
start_of_line = True