
FPGA
tastynoob
abbb
展开
-
使用FPGA设计的基于riscv指令集的入门级soc
ritter-soc是我大二时期在安路EG4s平台上设计的一款基于rv32im指令集的soc可运行基本的程序,和coremark跑分原创 2022-03-20 22:23:44 · 1087 阅读 · 0 评论 -
FPGA-RISCV内核入门3
接下来我们就开始正式的设计RISCV cpu了之前说了我们所设计的rv32i内核使用五级流水线所以我们来了解下cpu流水线的设计方法这是一个最简单的流水线模型中间的可以是组合电路或者时序电路第一个时序电路在上升沿时读取上一层电路的输出经过中间组合/时序电路的计算后输出到第二个时序电路在第二个上升沿来时,第二个时序电路读取中间输出,第一个时序电路读取上层输出如此往复。假如中间的运算要花费多个周期,还需要将流水线暂停多个这样的单元组成就构成了基本的流水线对于cpu内核也是一样即将一条原创 2021-09-12 17:42:40 · 660 阅读 · 0 评论 -
FPGA 流水线结构
了解了状态机结构,接下来就来学习更加高级的流水线结构状态机结构的好处是简单方便,但是综合出来的电路时序不高也就是很难高频工作,因为在一个时钟里要进行多次判断匹配虽然代码看上去很简单,但是综合出来的电路十分冗杂通常用于时序要求不高简单的电路流水线则与之相反流水线将一个工作拆分成多个小任务每个小任务执行起来十分简单快速每个小任务就是一个小模块这样有利于时序,但是会增加电路面积和复杂度最常见的就属cpu电路,频率动辄上Ghz下面是一个经典的5级流水线cpu运行时序[外链图片转存失败,源站原创 2021-07-09 20:04:15 · 753 阅读 · 0 评论 -
FPGA学习-5:仿真
在实际FPGA开发过程中我们不可能直接将代码烧录进板子里进行测试一是我们无法观察到其内部逻辑变换而是万一代码中的逻辑有问题直接进行甚至会导致芯片损坏毕竟FPGA无法像单片机那样可以利用串口打印等调试方法FPGA调试只能靠仿真依然是拿之前我们写的点灯代码做测试首先,仿真需要安装modelsim仿真工具该软件的安装这里不做赘述软件、环境变量都配置好后开始首先FPGA仿真需要一个测试模块我们先添加一个测试模块 test.v在进行仿真时,仿真软件就会模拟运行test.v这个模块点灯程序原创 2021-06-12 13:27:07 · 6787 阅读 · 1 评论 -
FPGA进阶:手撸神经网络
进过了之前的基础学习,想必大家应该对verilog有了个比较清晰的认识那么接下来,我们就来撸个神经网络吧!首先来介绍一下该神经网络的规格:使用IEEE标准的32位浮点数运算网络大小为3*3*3激活函数使用relu神经网络为固定结构使用组合电路,这意味着只要输入一个数据就能瞬间出来结果所有的电路模块均为组合逻辑使用到的基本资源:浮点运算器,浮点乘法器,浮点加法器,激活函数运算器特别注意:所有的数据类型均为单精度浮点数首先是激活函数运算模块module Act_Func( in原创 2021-06-13 14:29:04 · 993 阅读 · 1 评论 -
FPGA-10:设计个简单的cpu(真的简单!)
经过了之前的学习想必各位对verilog应该有了基本的基础那么,接下来,我们就来造cpu吧!我们将写一个简单的单周期cpu该cpu有一下特点:32位架构单周期执行简洁实用32位定长指令有手就行我称之为 “ant” 内核就跟蚂蚁一样,“功能弱小”,但也什么能干我也特地为该cpu编写了个汇编器包括使用python编写的bin转txt工具连接如下:click me下载该项目即可得到5个文件cpu.v: ant内核核心文件test.v : ant内核仿真文件an原创 2021-06-13 14:28:24 · 3477 阅读 · 2 评论 -
FPGA学习-1:什么是FPGA
FPGA(Field Programmable Gate Array)即现场可编程逻辑门阵列我们都知道,所有的芯片都是由一个个晶体管组成通过晶体管的不同组合来实现不同的功能最常见的莫过于我们手机上的cpu但是这些芯片的内部电路是固定的只能完成特定功能即使是cpu也是靠提前设计好的指令来完成不同任务但是他们都有一些共同点,那就是都依赖于基本的逻辑门电路而正如FPGA的名字一样,可编程逻辑门意味着可以通过编程来设计逻辑门的组合关系来实现不同的电路可以以极低的学习成本来学习数字电路,甚至是原创 2021-06-12 13:22:40 · 299 阅读 · 0 评论