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()}}
}
```
相关文章:
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/scal…...
Tomcat线程池原理(下篇:工作原理)
文章目录 前言正文一、执行线程的基本流程1.1 JUC中的线程池执行线程1.2 Tomcat 中线程池执行线程 二、被改造的阻塞队列2.1 TaskQueue的 offer(...)2.2 TaskQueue的 force(...) 三、总结 前言 Tomcat 线程池,是依据 JUC 中的线程池 ThreadPoolExecutor 重新自定义…...
【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例
服务器数据恢复环境: 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列,操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障: 该服务器在工作过程中,raid6磁盘阵列中有两块磁盘先后离线,不知道是管理…...
LeetCode 2583.二叉树中的第 K 大层和:层序遍历 + 排序
【LetMeFly】2583.二叉树中的第 K 大层和:层序遍历 排序 力扣题目链接:https://leetcode.cn/problems/kth-largest-sum-in-a-binary-tree/ 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k …...
element ui 安装 简易过程 已解决
我之所以将Element归类为Vue.js,其主要原因是Element是(饿了么团队)基于MVVM框架Vue开源出来的一套前端ui组件。我最爱的就是它的布局容器!!! 下面进入正题: 1、Element的安装 首先你需要创建…...
websoket
WebSockets 是一种先进的技术。它可以在用户的浏览器和服务器之间打开交互式通信会话。你可以向服务器发送消息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应,比较典型的应用场景就是即时通讯(聊天)系统。 <!DOC…...
案例:微服务从Java/SpringBoot迁移到Golan
基于 Java 的微服务,特别是那些使用 Spring Boot 的微服务,长期以来因其强大的功能和广泛的社区支持而闻名。Spring Boot 的约定优于配置方法简化了微服务的部署和开发,提供了大量开箱即用的功能,例如自动配置、独立功能和简单的依…...
小波变换模拟
小波变换是一种信号处理技术,通过在时间-频率域中使用基于小波的函数进行信号分析。小波变换在处理非平稳信号和图像时特别有用,可以将信号分解为不同频率的成分。它在数据压缩、去噪、特征提取等领域有广泛应用。 MATLAB中提供了用于二维离散小波变换的…...
cv::Mat图像操作
图像读写 //include header #include <opencv2/imgcodecs.hpp>/** Currently, the following file formats are supported: Windows bitmaps - *.bmp, *.dib (always supported) JPEG files - *.jpeg, *.jpg, *.jpe (see the Note section) JPEG 2000 files - *.jp2 (s…...
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…...
2024年软件测试岗位-面试
第一部分: 1、自我介绍:简历写到的快速描述,学校、学历、工作经验等(注意:不要过度优化简历,你不写别人可能会问,但你写了别人一定会问!) 第二部分: 1、功能测…...
【坑】Spring Boot整合MyBatis,一级缓存失效
一、Spring Boot整合MyBatis,一级缓存失效 1.1、概述 MyBatis一级缓存的作用域是同一个SqlSession,在同一个SqlSession中执行两次相同的查询,第一次执行完毕后,Mybatis会将查询到的数据缓存起来(缓存到内存中…...
J7 - 对于ResNeXt-50算法的思考
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 J6周有一段代码如下 思考过程 首先看到这个问题的描述,想到的是可能使用了向量操作的广播机制然后就想想办法验证一下&…...
R3F(React Three Fiber)基础篇
之前一直在做ThreeJS方向,整理了两篇R3F(React Three Fiber)的文档,这是基础篇,如果您的业务场景需要使用R3F,您又对R3F不太了解,或者不想使用R3F全英文文档,您可以参考一下这篇&…...
torch\tensorflow在大语言模型LLM中的作用
文章目录 torch\tensorflow在大语言模型LLM中的作用 torch\tensorflow在大语言模型LLM中的作用 在大型语言模型(LLM)中,PyTorch和TensorFlow这两个深度学习框架起着至关重要的作用。它们为构建、训练和部署LLM提供了必要的工具和基础设施。 …...
设计模式-创建型模式-单例模式
0 引言 创建型模式(Creational Pattern)关注对象的创建过程,是一类最常用的设计模式,每个创建型模式都通过采用不同的解决方案来回答3个问题:创建什么(What),由谁创建(W…...
备战蓝桥杯—— 双指针技巧巧答链表1
对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…...
微信小程序返回上一级页面并自动刷新数据
文章目录 前言一、获取小程序栈二、生命周期触发总结 前言 界面由A到B,在由B返回A,触发刷新动作 一、获取小程序栈 界面A代码 shuaxin(){//此处可进行接口请求从而实现更新数据的效果console.log("刷新本页面数据啦")},界面B代码 // 返回触…...
Spring⼯⼚创建复杂对象
文章目录 5. Spring⼯⼚创建复杂对象5.1 什么是复杂对象5.2 Spring⼯⼚创建复杂对象的3种⽅式5.2.1 FactoryBean 接口5.2.2 实例⼯⼚5.2.3 静态工厂 5.3 Spring 工厂的总结 6. 控制Spring⼯⼚创建对象的次数6.1 如何控制简单对象的创建次数6.2 如何控制复杂对象的创建次数6.3 为…...
Top-N 泛型工具类
一、代码实现 通过封装 PriorityQueue 实现,PriorityQueue 本质上是完全二叉树实现的小根堆(相对来说,如果比较器反向比较则是大根堆)。 public class TopNUtil<E extends Comparable<E>> {private final PriorityQ…...
蓝桥杯备赛:Floyd、Bellman-Ford、Dijkstra,三大最短路算法到底怎么选?(附场景对比与代码模板)
蓝桥杯竞赛:Floyd、Bellman-Ford、Dijkstra三大最短路算法实战指南 在算法竞赛的战场上,最短路问题就像是一道必考题,而Floyd、Bellman-Ford和Dijkstra这三大算法则是解题的利器。但很多选手在面对具体问题时常常陷入选择困难:该用…...
vLLM-v0.11.0快速入门:用OpenAI接口调用本地大模型,5分钟出结果
vLLM-v0.11.0快速入门:用OpenAI接口调用本地大模型,5分钟出结果 1. 为什么选择vLLM? 1.1 什么是vLLM? vLLM是伯克利大学LMSYS组织开源的高性能大语言模型推理框架。它通过创新的内存管理技术,显著提升了模型推理的效…...
2026.3.31 TRO成功和解案例 案件号:25-cv-25717,1000美金和解Palmer律所3000美金索赔,沃尔玛店铺全额解冻!
TRO经典案例案件概述案件号:25-cv-25717(点击查看案件详情)案件时间:2025-12-8收到TRO时间:2025-12-20销售平台:沃尔玛冻结金额:$209美金Palmer律所索赔额:$3,000美金侵权产品销售量…...
Hunyuan-MT 7B一键部署教程:基于Git实现快速环境搭建
Hunyuan-MT 7B一键部署教程:基于Git实现快速环境搭建 想试试那个在国际翻译比赛里拿了30个第一的Hunyuan-MT-7B模型吗?你可能在网上看到过它的介绍,支持几十种语言,翻译效果据说很惊艳。但一看到“本地部署”、“环境配置”这些词…...
别再折腾官方源了!用XianDian-IaaS-v2.2在CentOS7上30分钟搞定OpenStack最小化部署
30分钟极速部署OpenStack:XianDian-IaaS在CentOS7上的实战指南 OpenStack作为开源云计算平台的标杆,其强大的灵活性和模块化设计吸引了大量企业用户。但官方部署流程的复杂性往往让初学者望而却步——依赖项冲突、版本兼容性问题、繁琐的配置步骤&#x…...
5分钟精通Meld文件对比工具:效率倍增的3大场景实战指南
5分钟精通Meld文件对比工具:效率倍增的3大场景实战指南 【免费下载链接】meld Read-only mirror of https://gitlab.gnome.org/GNOME/meld 项目地址: https://gitcode.com/gh_mirrors/me/meld Meld是一款开源的可视化文件对比工具,能够帮助开发者…...
Pyrene-PEG-Sil,芘丁酸酯聚乙二醇三乙氧基硅烷,荧光特性对微环境变化高度敏感
一.名称英文名称:Pyrene-PEG-Silane,Pyrene-PEG-Sil,Py-PEG-Silane,Py-PEG-Sil中文名称:芘丁酸酯聚乙二醇三乙氧基硅烷,芘丁酸酯-PEG-三乙氧基硅烷分子量:1k,2k,3.4k&…...
Z-Image-Turbo在艺术创作中的实战:将文字灵感转化为超写实画作
Z-Image-Turbo在艺术创作中的实战:将文字灵感转化为超写实画作 你是否曾经有过绝妙的创意画面,却苦于无法将其具现化?Z-Image-Turbo极速云端创作室正是为解决这一痛点而生。这个基于先进AI技术的文生图工具,能够将你的文字描述在…...
沉浸式翻译扩展常见问题解决方案
沉浸式翻译扩展常见问题解决方案 【免费下载链接】immersive-translate 沉浸式双语网页翻译扩展 , 支持输入框翻译, 鼠标悬停翻译, PDF, Epub, 字幕文件, TXT 文件翻译 - Immersive Dual Web Page Translation Extension 项目地址: https://gitcode.c…...
【仅限JDK 25 Early Access用户】:隐藏API `LinkerOptions` 强制启用向量化调用的2行代码,实测吞吐提升2.8倍
第一章:Java 25 外部函数接口优化案例Java 25 正式将外部函数与内存 API(Foreign Function & Memory API)从预览特性转为正式特性,显著提升了 JVM 与本地代码交互的安全性、性能与开发体验。相比早期 JNI 方案,FFM…...
