vivado中如何读取十进制小数_[走近FPGA]之工具篇(上)-Vivado

工具简介

在本专栏之前发布的一篇知乎文章中,已经对SoC设计实验需要用到的相关软件工具进行了简单的介绍,文章链接如下:人生状态机:如何高效利用Arm DesignStart计划开放的处理器核-工具篇​zhuanlan.zhihu.com

由于SoC设计实验中既包含硬件的实现(Arm Cortex M系列处理器软核、总线互联模块、各种外设),也包含软件的实现(运行在处理器上的程序),因此在开发过程中需要用到多个软件工具。一图胜千言,为了更好地理清楚这些软件工具之间的关系,我当时和我的导师 @其实我是老莫 一起画了这样一张流程图。实现流程

从图中可以看出,Vivado负责将硬件描述语言(Verilog/VHDL)所描述的SoC编译、综合、实现,将FPGA内部本身无序的各种逻辑资源(如查找表、触发器、RAM等)配置成为有序的电路,实现SoC功能。而Keil负责将编写的软件编程语言(C/Assembler)编译成为机器码十六进制文件。将机器码作为RAM的初始化内容,即可进行仿真,在Modelsim软件中观察SoC工作时各个信号的波形。若将机器码通过工具下载到由FPGA实现的SoC中,那么就可以让SoC执行编写的程序,通过开发板观察程序的运行结果。

在后续的SoC设计实验中,我们将会完整地介绍图中描述的开发流程。然而,由于走近FPGA系列主要向大家分享的是逻辑设计及其在FPGA上的实现,因此在本系列的工具介绍部分,将对图中“硬件实现”部分的两个工具(Vivado和Modelsim)分别进行介绍。Vivado主要将RTL代码综合实现生成比特流,最终可以下载到FPGA板上观察现象,Modelsim主要用于仿真调试。本篇文章将主要介绍Vivado的安装及简单使用操作。

安装流程

安装流程以vivado 2018.2为例(其他版本安装过程是类似的)。

1.打开下载好的安装包,找到xsetup,双击启动安装过程。开始安装过程

2.Welcome界面直接点击Next跳过。直接跳过

3.相关条款选择“I Agree”,之后点击Next继续。经典 I Agree

4.选择安装版本时,选择Viva

### Vivado 中仿真读取十进制数的方法 在 Vivado 的仿真环境中处理十进制数值主要涉及两个方面:一是如何定义和初始化这些十进制值;二是怎样确保仿真的过程中能够正确解析并显示这些数值。 对于第一个方面,当希望加载预设的十进制数据至 FPGA 设备中的 RAM 或 ROM 组件时,可以通过设置 `memory_initialization_radix` 参数来指定输入的数据格式为十进制[^2]。例如: ```verilog // Verilog 代码片段用于声明一个具有初始值设定的 Block RAM module rom ( input wire clk, output reg [7:0] dout ); reg [9:0] addr; initial begin $readmemh("data_file.mif", ram); // 假定 data_file.mif 文件内含以十六进制编码的数据 end ... endmodule ``` 然而,在实际操作中如果想要直接使用十进制形式的数据,则应修改 `.mif` 文件或其他类似的内存映射文件的内容,并确保其头部指定了正确的基数(如 `memory_initialization_radix=10;`),以便于工具识别这是十进制而非默认的十六进制表示法。 至于第二个方面——使仿真结果显示为易于理解的形式,通常情况下波形查看器会按照项目配置自动决定数据显示的方式。但是为了强制让某些信号始终呈现为十进制格式,可以在启动仿真之前调整相应选项或者利用命令行指令改变目标变量的表现方式。比如,在 ModelSim 这样的第三方仿真平台里可以这样做: ```tcl # Tcl 脚本示例,用于更改当前窗口内的所有整型信号为十进制视图 foreach sig [get_waveform_signals -filter {type==integer}] { set_property radix decimal $sig } ``` 另外值得注意的是,尽管上述方法可以帮助更方便地理解和验证设计行为,但在底层实现层面所有的运算还是基于二进制逻辑完成的。因此即使看到的是十进制输出,也不影响最终硬件的行为特性。 最后关于 CSV 数据导出的问题,虽然原始采集到的信息可能是二进制位宽表达,但这并不妨碍后期转换成其他任何形式供进一步分析使用。只要掌握了合适的脚本编写技巧,就能轻松地把这类数据转化为更加通用易懂的十进制或者其他所需格式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值