chisel
文章平均质量分 80
AlwaysDayOne
这个作者很懒,什么都没留下…
展开
-
Chisel 实践二维脉动阵列计算复数矩阵乘法
脉动阵列,其核心概念是让数据在运算单元的阵列中进行流动,减少访存的次数,并且使得结构更加规整,布线更加统一,提高频率。基于二维脉动阵列的矩阵乘法计算一种实现思想如下引用的文章已经讲清楚,本文重在用Chisel去模拟实践二维脉动阵列的复数矩阵乘法,阅读本文前请阅读如下的前置文章:基于二维脉动阵列的矩阵乘法原创 2022-04-29 19:34:47 · 676 阅读 · 1 评论 -
基于二维脉动阵列的矩阵乘法
脉动阵列,其核心概念是让数据在运算单元的阵列中进行流动,减少访存的次数,并且使得结构更加规整,布线更加统一,提高频率。原创 2022-04-27 10:55:11 · 1091 阅读 · 0 评论 -
HLS / Chisel 实践CORDIC高性能计算复数平方根
tongg CORDIC算法实现复数求根原创 2022-04-21 16:49:22 · 358 阅读 · 0 评论 -
HLS / Chisel 利用CORDIC双曲系统实现平方根计算
CORDIC(坐标旋转数字算法)是一种计算三角、双曲和其他数学函数的数字算法,每次运算均产生一次结果输出。这使我们能够根据应用需求调整算法精度;增加运算迭代次数可以得到更精确的结果。CORDIC 是只使用加法、减法、移位和查找表实现的简单算法,这种算法在FPGA中实现效率高,在硬件算法实现中经常用到。本文主要在此下文章介绍CORDIC双曲系统的基础上介绍平方根计算。HLS / Chisel 实现CORDIC算法双曲系统原理在CORDIC算法双曲系统的向量模式中,最终的输出结果如下:{xn=Kn原创 2022-04-21 15:26:22 · 1002 阅读 · 0 评论 -
HLS / Chisel 实现CORDIC算法双曲系统
CORDIC(坐标旋转数字算法)是一种计算三角、双曲和其他数学函数的有效方法。它是一种数字算法,每次运算均产生一次结果输出。这使我们能够根据应用需求调整算法精度;增加运算迭代次数可以得到更精确的结果。原创 2022-04-18 14:34:00 · 971 阅读 · 0 评论 -
HLS / Chisel 实现CORDIC算法高性能复数除法
CORDIC(坐标旋转数字算法)是一种计算三角、双曲和其他数学函数的数字算法,每次运算均产生一次结果输出。这使我们能够根据应用需求调整算法精度;增加运算迭代次数可以得到更精确的结果。CORDIC 是只使用加法、减法、移位和查找表实现的简单算法,这种算法在FPGA中实现效率高,在硬件算法实现中经常用到。论文[1]介绍了一种通过CORDIC算法中CR、CV、LV三种模式拆分高性能计算复数除法的方法,本文将使用Chisel 实现该方法,这里默认在以下几篇文章的CORDIC原理基础之上完成。HLS / Chi原创 2022-04-13 19:34:46 · 953 阅读 · 0 评论 -
HLS / Chisel 实现CORDIC算法计算除法(线性坐标系向量模式LV)
通过cordic算法的LV线下坐标系向量模式计算实数除法原创 2022-04-10 17:59:48 · 976 阅读 · 0 评论 -
HLS / Chisel 实现CORDIC算法计算反三角函数(圆坐标系向量模式)
一个二维矢量v可以使用笛卡儿坐标系统(x,y)或极坐标系统(r,θ)来表示,对于极坐标系r是半径坐标(矢量的长度)和θ是角度坐标。给定一个用笛卡尔坐标系表示的数(x, y),我们使用CORDIC算法的**圆坐标系向量模式**可以计算它的角度和幅度坐标,即,将它转换成极坐标形式$(\theta, r)$,同时这个$\theta$就是反三角函数的值$\theta = arctan(y/x)$。原创 2022-04-05 17:15:18 · 1695 阅读 · 0 评论 -
HLS / Chisel 实现CORDIC算法计算三角函数(圆坐标系旋转模式)
CORDIC(坐标旋转数字算法)是一种计算三角、双曲和其他数学函数的有效方法。它是一种数字算法,每次运算均产生一次结果输出。这使我们能够根据应用需求调整算法精度;增加运算迭代次数可以得到更精确的结果。CORDIC是只使用加法、减法、移位和查找表实现的简单算法,这种算法在FPGA中实现效率高,在硬件算法实现中经常用到。原创 2022-04-04 11:24:36 · 1406 阅读 · 0 评论 -
Chisel 实现通用FIFO
通用 FIFO 可以定义如下:抽象数据类型抽象FIFO深度有握手信号的FIFOimport chisel3.util.log2Upimport chisel3._// 数据类型class DataBundle extends Bundle{ val a = UInt(32.W) val b = UInt(32.W)}class Fifo[T <: Data](gen: T, n: Int) extends Module { val io = IO(ne原创 2022-03-24 22:00:29 · 624 阅读 · 3 评论 -
chisel 组合电路
电路在 Chisel 中表示为节点图。每个节点都是具有零个或多个输入并驱动一个输出的硬件运算符。上面介绍的文字是一种退化的节点,它没有输入并在其输出上驱动一个常数值。创建和连接节点的一种方法是使用文本表达式。例如,我们可以使用以下表达式来表示一个简单的组合逻辑电路:(a & b) | (~c & d)语法应该看起来很熟悉,分别表示按位与&和| -OR,并~ 表示按位非。名称a通过d 代表一些(未指定)宽度的命名线。任何简单的表达式都可以直接转换成电路树,在叶子上命名连线,在内翻译 2022-03-24 17:06:25 · 123 阅读 · 0 评论 -
chisel的命名高级用法
从历史上看,Chisel 在可靠地捕获信号名称方面遇到了麻烦。造成这种情况的原因是(1)主要依靠反射来查找名称(2)使用@chiselName行为不可靠的宏。Chisel 3.4 引入了一个自定义的 Scala 编译器插件,它可以在声明信号名称时实现可靠和自动捕获信号名称。此外,此版本还大量使用了新的前缀 API,它可以更稳定地命名从函数调用以编程方式生成的信号。本文档解释了现在在 Chisel 中如何命名信号和模块名称。有关如何解决系统名称稳定性问题的手册示例,请参阅命名手册。编译器插件//翻译 2022-03-22 21:49:21 · 332 阅读 · 0 评论 -
Linux chisel环境配置
环境要求CentOS7安装JDK1.8Linux 安装sbtChisel项目和Java这种类似,一般是有标准的目录结构的,对于Chisel而言,使用Scala项目构建工具sbt会很方便,所以环境要求中需要sbt工具。chisel的环境配置并不需要安装其他东西了,只需要配置sbt的项目管理依赖文件即可。这里我们以一个例子来讲解。例子下载与测试首先下载此github仓库,进入hello-world项目文件夹下,并测试sbt工具正常git clone https://github.com/sc.原创 2022-03-20 18:12:58 · 2708 阅读 · 0 评论 -
Linux 安装sbt
已安装JDK8CentOS7安装JDK1.8Ubuntu安装echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.listecho "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.listcurl -sL ".原创 2022-03-20 18:10:16 · 2836 阅读 · 0 评论 -
Chisel bootcamp 安装 - Centos7.9
参考 chisel-bootcamp/Install.md at master · freechipsproject/chisel-bootcamp准备工作Centos7.9Dockerjdk1.8CentOS7安装JDK1.8jupyter安装Centos7.9 部署jupyter notebookScala安装Centos7.9 Jupyter 运行 Scaladocker安装方式运行容器docker仓库地址ucbbar/chisel-bootcamp - Docker Im.原创 2022-03-08 16:09:52 · 829 阅读 · 0 评论