- 博客(19)
- 收藏
- 关注
原创 使用FPGA设计的基于riscv指令集的入门级soc
ritter-soc是我大二时期在安路EG4s平台上设计的一款基于rv32im指令集的soc可运行基本的程序,和coremark跑分
2022-03-20 22:23:44 1038
原创 FPGA-RISCV内核入门3
接下来我们就开始正式的设计RISCV cpu了之前说了我们所设计的rv32i内核使用五级流水线所以我们来了解下cpu流水线的设计方法这是一个最简单的流水线模型中间的可以是组合电路或者时序电路第一个时序电路在上升沿时读取上一层电路的输出经过中间组合/时序电路的计算后输出到第二个时序电路在第二个上升沿来时,第二个时序电路读取中间输出,第一个时序电路读取上层输出如此往复。假如中间的运算要花费多个周期,还需要将流水线暂停多个这样的单元组成就构成了基本的流水线对于cpu内核也是一样即将一条
2021-09-12 17:42:40 592
原创 FPGA 流水线结构
了解了状态机结构,接下来就来学习更加高级的流水线结构状态机结构的好处是简单方便,但是综合出来的电路时序不高也就是很难高频工作,因为在一个时钟里要进行多次判断匹配虽然代码看上去很简单,但是综合出来的电路十分冗杂通常用于时序要求不高简单的电路流水线则与之相反流水线将一个工作拆分成多个小任务每个小任务执行起来十分简单快速每个小任务就是一个小模块这样有利于时序,但是会增加电路面积和复杂度最常见的就属cpu电路,频率动辄上Ghz下面是一个经典的5级流水线cpu运行时序[外链图片转存失败,源站
2021-07-09 20:04:15 715
原创 LVGL 移植
首先你要去LVGL的github上下载lvgl源代码下载完后解压你会得到如下文件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5jufqm1W-1625832064484)(https://i.loli.net/2021/07/09/J8hZGCDRu29lrBP.png)]其中src文件夹下为LVGL源码,不可修改examples下为LVGL与硬件交互的接口模板lv_conf_template.h为LVGL设置模板lvgl.h为LVGL库调用头文件LVGL的
2021-07-09 20:02:50 1321
原创 用express框架自己设计web服务器
首先要安装express框架命令行输入npm install -g express等待安装完成即可这里是全局安装express框架需要设置环境变量NODE_PATH将express模块路径添加到NODE_PATH中另外,你需要简单了解路由的概念比如:baidu.com/file/2333.jpg其中 “baidu.com”是host"/file"指的就是路由,由服务器处理你需要申请访问的路由“/file/2333.jpg” 需要就是访问的链接接下来,直接上代码//导入expres
2021-06-13 14:29:48 201
原创 FPGA进阶:手撸神经网络
进过了之前的基础学习,想必大家应该对verilog有了个比较清晰的认识那么接下来,我们就来撸个神经网络吧!首先来介绍一下该神经网络的规格:使用IEEE标准的32位浮点数运算网络大小为3*3*3激活函数使用relu神经网络为固定结构使用组合电路,这意味着只要输入一个数据就能瞬间出来结果所有的电路模块均为组合逻辑使用到的基本资源:浮点运算器,浮点乘法器,浮点加法器,激活函数运算器特别注意:所有的数据类型均为单精度浮点数首先是激活函数运算模块module Act_Func( in
2021-06-13 14:29:04 937 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 3337 2
原创 FPGA学习-9:时序电路之串口通讯模块
通信是时序电路的基础之一要保证信息能够在不同模块直接准确传输通信协议是保证信息传输的格式要求那么下面我们就来设计个最简单的也是最基础的串口通信模块串口通信时序这里不做介绍该串口模块的功能描述如下:波特率9600停止位1校验位无接收字节后将字节加一发送回去首先是PLL模块PLL模块给串口模块提供稳定的时钟信号代码如下:module PLL( input[31:0] sub, input clk, input rst, output reg clk_out); re
2021-06-12 13:34:29 366
原创 FPGA学习-8:简单的时序电路
经过上一章的了解组合电路的最大优势就是能直接根据输入进行输出但其也有很多的缺点:占大量的电路资源,功耗较大,电路固定…这一次我们来讲基本的时序电路,写一个简单的时序控制电路再在此基础上将之前的组合电路乘法器改成时序电路首先我们要来了解下安路FPGA的时钟信号安路FPGA的外部24Mhz晶振信号由k14号引脚提供使用 “IO Constraint” 引脚映射工具将veilog模块的某一输入端口映射到k14引脚上即可得到24Mhz的时钟信号先来设计个简单的 “可变分频器”代码如下:mod
2021-06-12 13:30:00 659
原创 FPGA学习-7:较为复杂的组合电路 下
之前我们学会了如何写一个全加器有了全加器我们就能制造出16位加法器等众多运算器接下来我们来写个加法器和乘法器简单的8位加法器如下:module Adder8( input[7:0] Ai, input[7:0] Bi, input Ci, output Do, output[7:0] Yo);wire[6:0] ds;//8个全加器Adder A0(Ai[0],Bi[0],0,ds[0],Yo[0]);Adder A1(Ai[1],Bi[1]
2021-06-12 13:28:52 184
原创 FPGA学习-7:较为复杂的组合电路 上
上一节我们学习了基本的3-8译码器组合电路verilog写法这一次我们来点有难度的,写一个整型全加器在此基础上再写一个单周期无符号整型乘法器首先从简单的开始:半加器半加器真值表ABC000011101110真值表可以写为:C = A xor B可以看到半加器就是2个1位二进制数相加verilog行为级代码如下:module Half_adder( input A, input B, output Y)
2021-06-12 13:28:20 157
原创 FPGA学习-6:简单的组合电路
数字电路可分为2大类:组合电路和时序电路组合电路的输出只取决于它的输入并能够在一瞬间完成,与之前状态无关时序电路则是在时钟控制下有条理的运行受时钟信号和输入的控制,与之前状态有关之前的点灯程序就是时序电路现在我们先从组合电路开始学习写一个简单的3-8译码器我们已经了解数字电路的基本组成是逻辑门:与门,或门,非门由这3种逻辑门即可组成各种复杂的逻辑电路组合逻辑电路一般都有个唯一确定的真值表我们要设计的3-8译码器的真值表如下输入输出00000000001
2021-06-12 13:27:41 252
原创 FPGA学习-5:仿真
在实际FPGA开发过程中我们不可能直接将代码烧录进板子里进行测试一是我们无法观察到其内部逻辑变换而是万一代码中的逻辑有问题直接进行甚至会导致芯片损坏毕竟FPGA无法像单片机那样可以利用串口打印等调试方法FPGA调试只能靠仿真依然是拿之前我们写的点灯代码做测试首先,仿真需要安装modelsim仿真工具该软件的安装这里不做赘述软件、环境变量都配置好后开始首先FPGA仿真需要一个测试模块我们先添加一个测试模块 test.v在进行仿真时,仿真软件就会模拟运行test.v这个模块点灯程序
2021-06-12 13:27:07 6697 1
原创 FPGA学习-4:初步入门点个灯
环境配置好后就正式进入verilog的学习了先从最简单的点灯开始我会向你们介绍最基础的数据类型和语法规则仍然是从我们熟悉的界面开始转到顶层模块 start中首先,verilog都是以模块为单位进行编程模块以 “module” “endmodule” 作为界限如图既是定义一个模块start,即顶层模块当然,可以定义其它模块再设置为顶层模块首先,一个电路模块肯定有输入输出还有寄存器,逻辑控制什么的先附上点灯代码module start( input button,//按键输入
2021-06-12 13:26:30 448
原创 FPGA学习-3:环境搭建
环境配置:安路FPGA的环境比较好搭建直接去sipeed下载站中即可下载如果出现没有license的情况参加这篇帖子新建工程:这是安路TD开发软件的界面新建项目点击左上角菜单的 “project”再点击 "New Project"选择好芯片后,就可点击“OK”建立工程了接下来右键Hierarchy,选择“新建文件 new source”文件类型选择verilog文件名称可以随意文件保存地址默认在项目文件夹下同时要勾选 "add to project"这样才能添加.
2021-06-12 13:25:15 680
原创 FPGA学习-2:开发板及Verilog介绍
我们将使用sipeed公司设计的tang permier开发板进行开发学习这款开发板使用了国产EG4S20芯片拥有2万多个逻辑门单元价格仅100多,极具性价比可以在上面跑riscv开源架构cpu核心完全够用IDE我们使用官方的安路TD软件详细安装过程可去sipeed文档上查看与开发程序类似开发FPGA同样有编程语言比如verilog,VHDL这里使用verilog作为核心开发语言如果你对C语言有一定的了解,有助于Verilog的快速上手。下面是一个简单的计数器module t
2021-06-12 13:24:14 1160
原创 FPGA学习-1:什么是FPGA
FPGA(Field Programmable Gate Array)即现场可编程逻辑门阵列我们都知道,所有的芯片都是由一个个晶体管组成通过晶体管的不同组合来实现不同的功能最常见的莫过于我们手机上的cpu但是这些芯片的内部电路是固定的只能完成特定功能即使是cpu也是靠提前设计好的指令来完成不同任务但是他们都有一些共同点,那就是都依赖于基本的逻辑门电路而正如FPGA的名字一样,可编程逻辑门意味着可以通过编程来设计逻辑门的组合关系来实现不同的电路可以以极低的学习成本来学习数字电路,甚至是
2021-06-12 13:22:40 268
原创 如何使用vscode舒适的开发嵌入式
想必用过keil的都会被keil糟糕的编辑体验和闪瞎眼的界面折磨过使用vscode开发环境又难配置那么这里就来安利一款十分好用,功能强大的插件–EIDE首先,你得要有vscode,vscode可以去微软官网下载点击这里然后在插件搜索框内搜索”EIDE”和“C++”c++插件不需多说提供了c/c++的自动补全,跳转,自动格式化等强大功能重点在于EIDE插件装好后它可能会提示你需要.net框架,安装即可,安装完成后重启一次电脑重新打开vscode即可点击侧边栏的EIDE插件你需要指定
2021-04-05 17:49:21 4304 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人