Skip to content

Commit

Permalink
Remove quartus
Browse files Browse the repository at this point in the history
  • Loading branch information
jiegec committed May 14, 2024
1 parent 97f0a03 commit 0841189
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 15 deletions.
2 changes: 1 addition & 1 deletion docs/hardware/peripheral.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ SPI(Serial Peripheral Interface),同步协议,一般有四个引脚:
* CP2102 模块(UART 串口转 USB):<https://detail.tmall.com/item.htm?id=41337916197&skuId=4141815325445>
* 逻辑分析仪(类似示波器,可解码任何数字协议,但不能发送数据):<https://item.taobao.com/item.htm?id=587348570376> (已下架)

如果有不同接口调试需要,建议另行购买单片机(如 Arduino)进行。在使用中如果遇到问题,建议使用 SignalTap/逻辑分析仪采集信号进行观察。
如果有不同接口调试需要,建议另行购买单片机(如 Arduino)进行。在使用中如果遇到问题,建议使用 ILA/逻辑分析仪采集信号进行观察。

## 注意事项

Expand Down
2 changes: 0 additions & 2 deletions docs/hdl-by-example/simulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -353,5 +353,3 @@ end
3. 运行 `xvlog b.v`
4. 运行 `xelab -debug all --snapshot sim_top sim_top`
5. 运行 `xsim sim_top`

如果仿真的模块中包含由 Quartus 提供的 IP,那么仿真的时候,还需要把 quartus 安装目录下的 `quartus/eda/sim_lib/altera_mf.v` 文件也当成一个源代码,加入到上面的命令中。
2 changes: 1 addition & 1 deletion docs/hdl/bus.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
* FIFO:在接口间缓存数据
* Register Slice:插入寄存器,切断组合逻辑,改善时序

Quartus 与 Vivado 中均有相应的 IP 可供使用。
Vivado 中有相应的 IP 可供使用。

## 流式传输协议

Expand Down
6 changes: 3 additions & 3 deletions docs/hdl/clocking.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ FPGA 中,时钟可以由以下两种方式产生:
* 外部输入:由 FPGA 芯片外部的晶振的周期震荡产生并输入到 FPGA 中;
* 内部生成:FPGA 内部具有 PLL (Phase-Locked Loops) 或 MMCM (Mixed-Mode Clock Manager) 等时钟管理组件可以根据已有的时钟产生新的时钟,并更改频率、相位等属性。

通常,如果需要的时钟频率与输入的不一致(更高或者更低),就需要使用 PLL/MMCM 来生成新的时钟。Quartus 与 Vivado 均提供了相应的 IP Core,分别称为 PLL 和 Clocking Wizard。
通常,如果需要的时钟频率与输入的不一致(更高或者更低),就需要使用 PLL/MMCM 来生成新的时钟。Vivado 提供了相应的 IP Core,称为 Clocking Wizard。
在初始化 IP 时,提供输入时钟的频率、抖动(可取默认值)等信息,而后指定需要的时钟信息,即可生成新的时钟供使用。
一般来说,此类 IP 会提供一个名称类似 `locked` 的信号,表明输出是否稳定,可以用作其生成的时钟对应的(异步)复位信号(注意极性)。

Expand Down Expand Up @@ -73,10 +73,10 @@ end

对于分隔于两个时钟域的生产者——消费者模型,可以通过具有两个端口的 FIFO 来进行同步,每端使用自己的时钟进行 `enqueue``dequeue` 即可。

Quartus 中对应的 IP Core 名称为 FIFO(IP 设置中选择 No common clock,对应的模块名字为 `DCFIFO` (读写宽度相同)和 `DCFIFO_MIXED_WIDTHS`(读写宽度不同)),Vivado 中为 `FIFO Generator` (PG057),XPM 中也有相应的 `XPM_FIFO_ASYNC` 模块。
Vivado 中 IP Core `FIFO Generator` (PG057),XPM 中也有相应的 `XPM_FIFO_ASYNC` 模块。

### 异步双口 RAM

对于更一般的需求,可以通过具有两个时钟域的两个读写端口的 Block RAM 来传递数据,每端使用自己的时钟进行操作。

Quartus 中对应的 IP Core 名为 `Simple Dual-port RAM`(一口读、一口写)和 `True Dual-port RAM`(两口均可读写),Vivado 中为 `Block Memory Generator`(配置时同样可选前述两种模式),XPM 中有相应的 `XPM_MEMORY_SDPRAM``XPM_MEMORY_TDPRAM` 模块。
Vivado 中 IP Core `Block Memory Generator`(配置时同样可选前述两种模式),XPM 中有相应的 `XPM_MEMORY_SDPRAM``XPM_MEMORY_TDPRAM` 模块。
12 changes: 6 additions & 6 deletions docs/hdl/debug.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
# 调试相关

## SignalTap/ILA 集成逻辑分析仪
## ILA 集成逻辑分析仪

无论是 Intel 的 FPGA,还是 Xilinx 的 FPGA,都支持在 FPGA 内部进行“调试”:实际上,就是在 FPGA 内部内嵌一个逻辑分析仪,不断地对内部信号进行采样,保存下来,传输到电脑上进行展示。这个功能,在 Quartus 中叫做 SignalTap,在 Vivado 中叫做 ILA(Integrated Logic Analyzer)。
Xilinx 的 FPGA,支持在 FPGA 内部进行“调试”:实际上,就是在 FPGA 内部内嵌一个逻辑分析仪,不断地对内部信号进行采样,保存下来,传输到电脑上进行展示。这个功能,在 Vivado 中叫做 ILA(Integrated Logic Analyzer)。

为了让 Quartus/Vivado 插入集成逻辑分析仪,需要设置如下的内容:
为了让 Vivado 插入集成逻辑分析仪,需要设置如下的内容:

1. 采样的时钟来自于 FPGA 内部的哪个时钟信号
2. 使用上述时钟采样哪些信号

!!! note "注意时钟"

因为逻辑分析仪的原理是用指定的时钟不断地采样 FPGA 内部信号,所以在使用 SignalTap/ILA 采样信号时,被采样的信号与所使用的时钟要对应,因此通常情况下不同的时钟域会使用不同的时钟,也就可能需要创建多个集成逻辑分析仪实例。
因为逻辑分析仪的原理是用指定的时钟不断地采样 FPGA 内部信号,所以在使用 ILA 采样信号时,被采样的信号与所使用的时钟要对应,因此通常情况下不同的时钟域会使用不同的时钟,也就可能需要创建多个集成逻辑分析仪实例。

SignalTap/ILA 中,可以从多个来源选择要采样的信号。通常,`Pre-Synthesis` 中的结构保留最为完整,而 `Post-Fit` 中已经是优化后的网表,可能丢失部分信号(或者名称被修改)。
在 ILA 中,可以从多个来源选择要采样的信号。通常,`Pre-Synthesis` 中的结构保留最为完整,而 `Post-Fit` 中已经是优化后的网表,可能丢失部分信号(或者名称被修改)。

如果 SignalTap/ILA 始终无法找到/采样某些信号,可以考虑将对应信号标记为 `dont_touch` 以防止 EDA 工具优化。不同语言中用法如下:
如果 ILA 始终无法找到/采样某些信号,可以考虑将对应信号标记为 `dont_touch` 以防止 EDA 工具优化。不同语言中用法如下:

=== "Verilog / SystemVerilog"

Expand Down
4 changes: 2 additions & 2 deletions docs/vivado.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ Vivado 是用于 Xilinx FPGA 的 EDA 开发工具。
* `dpy_scan.sv`:数码管扫描、译码模块
* `led_scan.sv`:LED 扫描模块
* `video.sv`:使用 VGA 时序驱动 HDMI 接口的样例
* `ip/`:用于放置 Quartus 生成的各类 IP
* `pll`:预生成的 PLL 模块,用于从输入的 100M 时钟生成 50M 时钟提供给 VGA 模块
* `project-template-xilinx.srcs/sources_1/ip`:用于放置 Vivado 生成的各类 IP
* `ip_pll`:预生成的 PLL 模块,用于从输入的 100M 时钟生成 50M 时钟提供给 VGA 模块

在新建文件时,你也应当遵循这一规范,合理放置文件。

Expand Down

0 comments on commit 0841189

Please sign in to comment.