spinalhdl,vivado,fpga

https://spinalhdl.github.io/SpinalDoc-RTD/master

spinal hdl

sudo apt install openjdk-17-jdk scala curl
echo “deb https://repo.scala-sbt.org/scalasbt/debian all main” | sudo tee /etc/apt/sources.list.d/sbt.list
echo “deb https://repo.scala-sbt.org/scalasbt/debian /” | sudo tee /etc/apt/sources.list.d/sbt_old.list
curl -sL “https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823” | sudo apt-key add
sudo apt update
sudo apt install sbt

vscode 安装“Scala (Metals)”扩展,将官方的示例放到 vscode 里,然后等右下角弹框,选 sbt,下一个选 import build,等待完成,然后打开 hw/spinal/projectname/MyTopLevel.scala,“object MyTopLevelVerilog extends App”上面会出现“run | debug”,点击 run,就会在 hw/gen 下生成 .v 文件

生成波形文件和查看波形

sudo apt install zlib1g-dev
sudo apt install verilator gtkwave

这也会生成 .v 文件,在 tmp/job_1 里,如果测试代码完整可以直接走这步
打开 hw/spinal/projectname/MyTopLevelSim.scala,“object MyTopLevelSim extends App”上面也会出现“run | debug”,点击 run,就会在 simWorkspace/MyTopLevel 下生成 .fst 波形文件,可以使用 gtkwave simWorkspace/MyTopLevel/*.fst 直接打开查看波形

vivado

安装选项选择 vivado,vivado ml enterprise,其他默认,等待下载安装完成,默认安装到 /tools/Xilinx

如果无法使用 jtag 调试器,就需要升级 linux 内核,先 apt update & apt upgrade -y 升级一次,如果不行就使用测试通道。

测试通道:包名是 linux-image-amd64。使用“apt search linux-image-amd64”查看仓库里的版本,但是版本不一定够,可以修改“/etc/apt/sources.list”文件里的系统代号为“testing”并apt update,再apt install linux-image-amd64,然后重启,查看内核版本,弄好了就可以把“/etc/apt/sources.list”文件内容还原。

安装:

二选一
.bin 在线安装器直接安装chmod a+x ./Xilinx_Unified_2023.1_0507_1903_Lin64.binsudo ./Xilinx_Unified_2023.1_0507_1903_Lin64.bin.tar...,在线安装器下载压缩包解压安装tar -xvf Xilinx...tar...cd Xilinx...sudo ./xsetup

安装调试器 .rules file:

cd /tools/Xilinx/Vivado/2023.1/data/xicom/cable_drivers/lin64/install_script/install_drivers
sudo ./install_drivers

启动:
默认安装到 /tools/Xilinx/。由于是 sudo 安装,桌面图标在 /root/Desktop/ 下,需要 sudo cp /root/Desktop/* /usr/share/applications/
命令行启动:/tools/Xilinx/Vivado/2023.1/bin/vivado
或桌面图标启动

报错及问题

从命令行启动才能看到报错信息

报错/tools/Xilinx/Vivado/2023.1/bin/rdiArgs.sh: 行 37: 警告:setlocale: LC_ALL: 无法改变区域设置 (en_US.UTF-8):没有那个文件或目录.../bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)...
解决方法sudo localedef -i en_US -f UTF-8 en_US.UTF-8报错或点击 vivado 图标无法启动application-specific initialization failed: couldn't load file "librdi_commontasks.so": libtinfo.so.5: cannot open shared object file: No such file or directory..
解决方法sudo ln /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

一个 led 闪烁的示例(MyTopLevel.scala)

package projectnameimport spinal.core._// Hardware definition
case class MyTopLevel() extends Component {val io = new Bundle {val led = out Bool ()}val counter = Reg(UInt(32 bits))val led = Reg(Bool ())io.led := led// 每秒反转 led// reality 是 frequency_t 枚举类型里的值。仿真用低频 simulation 值,板卡测试用实际频率when(counter <= frequency_t.reality.asBits.asUInt) {counter := counter + 1} otherwise {counter := 0led := !led}
}// 自定义的枚举类型
object frequency_t extends SpinalEnum{val simulation, reality = newElement()defaultEncoding = SpinalEnumEncoding("staticEncoding")(simulation -> 10,reality -> 100000000 // 100M)
}object MyTopLevelVerilog extends App {Config.spinal.generateVerilog(MyTopLevel())
}

其生成的 veriloghdl(MyTopLevel.v)

// Generator : SpinalHDL v1.8.1    git head : 2a7592004363e5b40ec43e1f122ed8641cd8965b
// Component : MyTopLevel`timescale 1ns/1psmodule MyTopLevel (output              io_led,input               clk,input               reset
);localparam frequency_t_simulation = 27'd10;localparam frequency_t_reality = 27'd100000000;wire       [31:0]   _zz_when_MyTopLevel_l16;wire       [26:0]   _zz_when_MyTopLevel_l16_1;reg        [31:0]   counter;reg                 led;wire                when_MyTopLevel_l16;assign _zz_when_MyTopLevel_l16_1 = frequency_t_reality;assign _zz_when_MyTopLevel_l16 = {5'd0, _zz_when_MyTopLevel_l16_1};assign io_led = led;assign when_MyTopLevel_l16 = (counter <= _zz_when_MyTopLevel_l16);always @(posedge clk) beginif(when_MyTopLevel_l16) begincounter <= (counter + 32'h00000001);end else begincounter <= 32'h0;led <= (! led);endendendmodule

其仿真(MyTopLevelSim.scala)

led 只要输出,所以其他的去掉了

package projectnameimport spinal.core._
import spinal.core.sim._object MyTopLevelSim extends App {Config.sim.compile(MyTopLevel()).doSim { dut =>// Fork a process to generate the reset and the clock on the dutdut.clockDomain.forkStimulus(period = 10)for (idx <- 0 to 99) { // 仿真运行 100 个时钟// Wait a rising edge on the clockdut.clockDomain.waitRisingEdge()}}
}
​```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈加密算法(对称加密、非对称加密、混合加密、数字签名、哈希函数)

1、对称加密 对称加密只有一个密钥&#xff0c;直接使用这一个密钥对信息进行加密或解密。这样子就使得对称加密解密十分高效&#xff0c;计算量也相较于非对称加密小很多&#xff0c;适合有大量数据的场合。 密钥只有一个且他一定不能泄漏。由此分发密钥&#xff0c;讲这个密钥…

SQL 练习题目(入门级)

今天发现了一个练习SQL的网站--牛客网。里面题目挺多的&#xff0c;按照入门、简单、中等、困难进行了分类&#xff0c;可以直接在线输入SQL语句验证是否正确&#xff0c;并且提供了测试表的创建语句&#xff0c;也可以方便自己拓展练习&#xff0c;感觉还是很不错的一个网站&a…

ChromeDriver | 谷歌浏览器驱动下载地址 及 浏览器版本禁止更新

在使用selenoum时&#xff0c;需要chrome浏览器的版本和chrome浏览器驱动的版本一致匹配&#xff0c;才能进行自动化测试 一、ChromeDriver驱动镜像网址 国内可以搜到的谷歌浏览器下载地址里面最新的驱动器只有114版本的CNPM Binaries Mirror 在其他博主那找到了最新版本12X的…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现原理…

识别图片字符-PaddleOCR

PaddleOCR 是由百度开发的一个开源光学字符识别&#xff08;OCR&#xff09;工具&#xff0c;它可以识别图片中的文本信息。然而&#xff0c;PaddleOCR 本身主要专注于文本的检测与识别 安装PaddleOCR框架 pip install paddlepaddle paddleocr 使用PaddleOCR识别图片代码 fro…

STL - hash

1、unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到O()&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好 的查询是&#xff0c;进…

第四十一回 还道村受三卷天书 宋公明遇九天玄女-python创建临时文件和文件夹

宋江想回家请老父亲上山&#xff0c;晁盖说过几天带领山寨人马一起去。宋江还是坚持一个人去。 宋江到了宋家村&#xff0c;被两个都头和捕快们追捕&#xff0c;慌不择路&#xff0c;躲进了一所古庙。一会儿&#xff0c;听见有人说&#xff1a;小童奉娘娘法旨&#xff0c;请星主…

SpringBoot2整合支付宝进行沙箱支付

目录 1. 进入支付宝的开放平台 2. 导入Maven依赖 3. 配置application.yml文件 NATAPP.cn(内网穿透工具) 注册登录 下载 4. 后端配置 5. 测试 1. 进入支付宝的开放平台 开发平台: 支付宝开放平台 登录后,点击控制台 点击最下面的沙箱 2. 导入Maven依赖 <dependency…

频率主义线性回归和贝叶斯线性回归

整体概述 频率主义&#xff08;Frequentist&#xff09;线性回归和贝叶斯&#xff08;Bayesian&#xff09;线性回归是统计学中用于数据分析和预测的两种主要方法&#xff0c;特别是在建模关于因变量和自变量之间线性关系的上下文中。尽管两种方法都用于线性回归分析&#xff…

【LeetCode】746. 使用最小花费爬楼梯(简单)——代码随想录算法训练营Day38

题目链接&#xff1a;746. 使用最小花费爬楼梯 题目描述 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 …

Git 客户端可视化工具tortoisegit

Git 使用教程 git一点通 (kdocs.cn) 二、Git 客户端可视化工具-推荐 1.常用工具 tortoisegit 官网 https://tortoisegit.org/ 推荐 sourcetree 官网 https://www.sourcetreeapp.com/ 2.tortoisegit安装 2.1 下载安装包 2.2 下载语言包 2.3 安装 2.4 安装语言包 5.使用 5.1 新建…

C++ CRTP设计范式

CRTP&#xff08;Curiously Recurring Template Pattern&#xff09;奇异递归模板范式是一个相对少有人知的C设计范式&#xff0c;它可以实现基类指针调用派生类的函数&#xff0c;从而实现另类多态。 如&#xff1a; #include <iostream> // 基类模板&#xff0c;接受…

Sora 一款文本转视频模型

**Sora** 是一个由美国人工智能研究机构 **OpenAI** 开发的 AI 视频模型。让我们一起了解一下这个令人兴奋的项目&#xff1a; 1. **名称和含义**&#xff1a; - 在日语中&#xff0c;**Sora** 是“天空”的意思&#xff0c;引申含义还有“自由”。 - **Sora** 的官方介绍页上展…

js之事件循环

JavaScript的事件循环是它的并发模型的核心部分&#xff0c;使得JavaScript能够在单线程中处理异步操作。事件循环允许JavaScript在执行代码时&#xff0c;同时进行非阻塞的I/O操作&#xff08;如网络请求、文件操作等&#xff09;。这个概念对于理解如何高效地构建交互式Web应…

本地模拟发送、接收RabbitMQ数据

文章目录 前言一、相关文章二、相关代码1.模拟的 Channel 类2.接收消息3.模拟推送MQ数据前言 日常开发中,当线上RabbitMQ坏境还没准备好时,可在本地模拟发送、接收消息 一、相关文章 Docker安装RabbitMQ 【SpringCloud】整合RabbitMQ六大模式应用(入门到精通) Spring R…

Spring学习笔记(三)--Spring中的Bean的管理

一、什么是Bean Bean是注册到Spring容器中的Java类&#xff0c;控制反转和依赖注入都是通过Bean实现的&#xff0c;任何一个Java类都可以是一个Bean。Bean由Spring进行管理&#xff0c;可以通过xml文件对bean进行配置和管理。 二、BeanFactory接口和ApplicationContext接口&a…

利用Python实现科学式占卜

一直以来&#xff0c;中式占卜都是基于算命先生手工实现&#xff0c;程序繁琐&#xff08;往往需要沐浴、计算天时、静心等等流程&#xff09;。准备工作复杂&#xff08;通常需要铜钱等道具&#xff09;&#xff0c;计算方法复杂&#xff0c;需要纯手工计算二进制并转换为最终…

2023年12月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 运行以下程序,输出的结果是?( ) class A():def __init__(self,x):self.x=x

手机连接电脑后资源管理器无法识别(识别设备但无法访问文件)

问题描述 小米8刷了pixel experience系统,今天用电脑连接后无法访问手机文件,但是手机选择了usb传输模式为文件传输 解决办法 在设备和打印机页面中右键选择属性 点击改变设置 卸载驱动,注意勾选删除设备的驱动程序软件 卸载后重新连接手机,电脑弹出希望对设备进行什么操作时…

Code-Audit(代码审计)习题记录4-5

4、习题4 题目内容如下&#xff1a; <?php error_reporting(0); show_source(__FILE__); $a $_REQUEST[hello]; eval("var_dump($a);"); 函数解释 $REQUEST — HTTP Request 变量&#xff0c;默认情况下包含了 [$GET]&#xff0c;[$POST] 和 [$COOKIE]的数…