【tinyriscv verilator】分支移植到正点原子达芬奇开发板
我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计。
关注公众号【集成电路设计教程】,获取更多学习资料,并拉你进“IC设计交流群
”。
QQIC设计&FPGA&DL交流群
群号:866169462
。
文章目录
- 前言
- 一、下载源码
- 二、移植到Aritx-7
- 2.1 添加 mmcm IP
- 2.2 管脚约束
- 2.3 综合实现
- 三、简单测试
前言
为了完成自己的毕设,得用OpenOCD作上位机,测试下RISC-V的单步调试以及GDB调试等操作,然后看了下tinyriscv-verilator
的调试模块支持这些操作,所以来移植下该版本的tinyriscv,以博客进行记录。
一些基础操作这里不再赘述,不会的读者可以去看我的另一篇博客:手把手教你移植 tinyriscv 到FPGA上
https://blog.csdn.net/qq_44447544/article/details/123251073
一、下载源码
码云链接:https://gitee.com/liangkangnan/tinyriscv/tree/verilator/
打包下载即可,解压后,将RTL添加到新建工程源码中。添加完成后,如下图所示:
可以看到 jtag 调试模块更新了,将tap、dtm、dmi以及dm模块都独立实现了。
二、移植到Aritx-7
开发板;正点原子达芬奇FPGA开发板(v1),芯片型号为 xc7a35tfgg484-1
调试器:FT4232H
2.1 添加 mmcm IP
在 tinyriscv_soc_top.sv
顶层模块中例化了 mmcm IP,所以要进行添加,点击左侧导航栏中的 IP Catalog,搜索 Clocking,选择下图所示的IP:
配置如下图所示;
然后点击 ok,弹出的弹窗选择 Generate
。
可以看到此IP已经不再是缺失状态了。
2.2 管脚约束
首先来看下此版本的tinyriscv的顶层接口:
可以看到和master 版本基本差不多,去掉了单独的UART Pins,将UART功能放在了GPIO复用功能中。管脚约束的话,时钟约束到板卡时钟管脚上,复位按钮约束到按钮上,halted_ind_pin 信号和 dump_wave_en_o 信号均约束到LED上,jtag、gpio和flash spi均约束到空闲IO上即可。
约束文件:
# 时钟约束50MHz,占空比50%
create_clock -period 20.000 -name sys_clk_pin -waveform {0.000 10.000} -add [get_ports clk_50m_i]# 时钟引脚
set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports clk_50m_i]# 复位引脚
set_property -dict {PACKAGE_PIN U2 IOSTANDARD LVCMOS33} [get_ports rst_ext_ni]# CPU停住指示引脚,halted_ind_pin 为1时有效,点亮led2
set_property -dict {PACKAGE_PIN V2 IOSTANDARD LVCMOS33} [get_ports halted_ind_pin]# io_pins引脚
set_property -dict {PACKAGE_PIN F16 IOSTANDARD LVCMOS33} [get_ports {io_pins[0]}]
set_property -dict {PACKAGE_PIN F15 IOSTANDARD LVCMOS33} [get_ports {io_pins[1]}]
set_property -dict {PACKAGE_PIN F13 IOSTANDARD LVCMOS33} [get_ports {io_pins[2]}]
set_property -dict {PACKAGE_PIN E14 IOSTANDARD LVCMOS33} [get_ports {io_pins[3]}]
set_property -dict {PACKAGE_PIN H18 IOSTANDARD LVCMOS33} [get_ports {io_pins[4]}]
set_property -dict {PACKAGE_PIN G17 IOSTANDARD LVCMOS33} [get_ports {io_pins[5]}]
set_property -dict {PACKAGE_PIN H15 IOSTANDARD LVCMOS33} [get_ports {io_pins[6]}]
set_property -dict {PACKAGE_PIN H14 IOSTANDARD LVCMOS33} [get_ports {io_pins[7]}]
set_property -dict {PACKAGE_PIN G13 IOSTANDARD LVCMOS33} [get_ports {io_pins[8]}]
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports {io_pins[9]}]
set_property -dict {PACKAGE_PIN AB18 IOSTANDARD LVCMOS33} [get_ports {io_pins[10]}]
set_property -dict {PACKAGE_PIN G15 IOSTANDARD LVCMOS33} [get_ports {io_pins[11]}]
set_property -dict {PACKAGE_PIN G16 IOSTANDARD LVCMOS33} [get_ports {io_pins[12]}]
set_property -dict {PACKAGE_PIN P20 IOSTANDARD LVCMOS33} [get_ports {io_pins[13]}]
set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports {io_pins[14]}]
set_property -dict {PACKAGE_PIN J16 IOSTANDARD LVCMOS33} [get_ports {io_pins[15]}]# JTAG TCK引脚 PortA 0
set_property -dict {PACKAGE_PIN AA8 IOSTANDARD LVCMOS33} [get_ports jtag_TCK_pin]
create_clock -period 300.000 -name jtag_clk_pin [get_ports jtag_TCK_pin]
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets jtag_TCK_pin]# JTAG TMS引脚 PortA 3
set_property -dict {PACKAGE_PIN AB8 IOSTANDARD LVCMOS33} [get_ports jtag_TMS_pin]# JTAG TDI引脚 PortA 1
set_property -dict {PACKAGE_PIN Y7 IOSTANDARD LVCMOS33} [get_ports jtag_TDI_pin]# JTAG TDO引脚 PortA 2
set_property -dict {PACKAGE_PIN Y8 IOSTANDARD LVCMOS33} [get_ports jtag_TDO_pin]# SPI dq引脚
set_property -dict {PACKAGE_PIN F14 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[0]}]
set_property -dict {PACKAGE_PIN F18 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[1]}]
set_property -dict {PACKAGE_PIN D17 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[2]}]
set_property -dict {PACKAGE_PIN W22 IOSTANDARD LVCMOS33} [get_ports {flash_spi_dq_pin[3]}]# SPI SS引脚
set_property -dict {PACKAGE_PIN E13 IOSTANDARD LVCMOS33} [get_ports flash_spi_ss_pin]# SPI CLK引脚
set_property -dict {PACKAGE_PIN H22 IOSTANDARD LVCMOS33} [get_ports flash_spi_clk_pin]#SPI 相关设置
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.CONFIG.UNUSEDPIN PULLUP [current_design]
2.3 综合实现
管脚约束好后,进行综合实现,版图如下:
资源利用率;
三、简单测试
生成比特流下载到开发板上,然后通过OpenOCD进行连接。
可以看到已经成功连接到了。再登录终端尝试单步调试和断点:
都没问题,搞定,继续弄毕业论文去了。
【tinyriscv verilator】分支移植到正点原子达芬奇开发板相关推荐
- DDR3-基于正点原子达芬奇100Tpro1.0版本
1.DDR3硬件设计 2.DDR3引脚作用 信号 类型 作用 CK,~CK Input 一对差分信号时钟,可在CK的上升沿和下降沿采样 CKE Input 时钟使能,操作使能,为低时只能自刷新 CS ...
- 正点原子达芬奇artix7开发板连接usb和xilinx下载器冲突的解决办法
最近试玩了一下手上这块a7,发现板载的fdti和jtag下载器里面的fdti驱动冲突,研究了一下找到一个折中的解决办法:首先开发板断电并断开下载器连接,将USB线与板载 USB Slave接口连接,打 ...
- pdfstamper生成pdf无法显示汉字_正点原子STM32F4/F7水星开发板资料连载第四十六章 汉字显示实验...
1)实验平台:正点原子水星 STM32F4/F7 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载 ...
- 正点原子阿波罗STM32F429开发板资料发布,采用底板+核心板
正点原子阿波罗STM32F429开发板资料发布,采用底板+核心板.... https://www.amobbs.com/thread-5654611-1-1.html 正点原子STM32开发板 htt ...
- fpu测试_正点原子STM32F4/F7水星开发板资料连载第五十章 FPU 测试实验
1)实验平台:正点原子水星 STM32F4/F7 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载 ...
- 光盘显示0字节可用_正点原子STM32F4/F7水星开发板资料连载第四十六章 汉字显示实验
1)实验平台:正点原子水星 STM32F4/F7 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载 ...
- 正点原子STM32103 战舰V3 开发板的ST LINK(SWD)接线图
正点原子STM32103 战舰V3 开发板的ST LINK(SWD)接线如下图,5V供电旁边有个自锁开关,需要按下去(右下角有个POWER蓝色灯会点亮)才是上电的,另外另外根据实验测试使用ST LIN ...
- 达芬奇PRO板的FPGA功能学习笔记(一)
达芬奇PRO板的FPGA功能学习笔记(一) 从编译到实现需要五个步骤: 1.写代码(verilog语言) 2.综合分析 3.写约束文件 约束文件主要是定义接口,命令第一个关键字代表命令的名称,其后的每 ...
- IMX6ULL裸机学习----LED正点原子在韦东山开发板上实现
前言 一.IMX6ULL 启动流程? 二.LED代码移植 1.硬件介绍 2.代码移植 总结 前言 最近在学习IMX6ULL这个开发板,手边有韦东山老师的imx6ull全功能板子,为了练习学习的初步效果 ...
最新文章
- “重构”黑洞:26岁MIT研究生的新算法 | 人物志
- 10没有基于策略的qos_分布式QoS算法解析
- HTTPS协议,SSL协议及完整交互过程
- 手机python代码写好了怎么运行-想在手机上编写python代码?手机上玩转python的利器...
- React入门---事件与数据的双向绑定-9
- resize函数_每日一题手写函数防抖与节流
- 招募 | 清华大学计算机系副教授黄民烈招募NLP方向博士后
- loadrunner9.10安装及破解问题解决(转)
- nvidia-smi‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
- [HDOJ1823] Luck and Love(线段树,树套树)
- LINUX下system和execl有什么差异?
- 【TWVRP】基于matlab遗传算法求解带时间窗的载重约束外卖配送车辆路径规划问题【含Matlab源码 1417期】
- JavaWeb学习笔记(2)-B站尚硅谷
- 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
- 今天搞事情,angularjs项目实例分析
- mikrotik桥接TP-link教程
- PL-VIO学习+注释
- 走进递归经典——汉诺塔问题详解
- windows文件格式转换为linux格式
- 在win10中AsciiDoc使用plantUML的使用报错:Dot Executable:C:\Program Files\Graphviz2.38 it should be an executa