烟雨楼台十一郎
这个作者很懒,什么都没留下…
展开
-
RISC-V设计详解
risc-v蓬勃发展,为来risc-v的市场前景已经肉眼可见,risc-v的蓬勃还有另一个原因,开源,任何设计者或者企业都可以根据自己的需求,设计自己的risc-v架构,而不用担心版权问题。risc-v当前还走在低端芯片,未来进入高端已经是。原创 2023-08-08 22:39:47 · 233 阅读 · 0 评论 -
RV32I的指令概述
无符号小于立即数则置位(Set if Less Than Immediate, Unsigned),比较x[rs1]和有符号扩展的immediate,比较时视为无符号数,如果x[rs1]更小,向x[rd]写入1,否则写入0。无符号小于则置位(Set if Less Than,Unsigned),比较x[rs1]和x[rs2],比较时视为无符号数,如果s[rs1]更小,则向x[rd]写入1,否则写入0。逻辑右移,把寄存器x[rs1]右移x[rs2]位,空的位置填0后,将结果写入x[rd]。原创 2023-08-07 23:35:49 · 179 阅读 · 0 评论 -
RISC-V32i详解
func7,func3:表示指令的功能,同一指令类型中通过这几个bit域来区分具体功能(数字“7”代表是占用7-bit位宽,数字“3”同样);I型指令:立即数类型指令,用于在寄存器和立即数(常数)之间执行算术、逻辑、移位和分支等操作。S型指令:存储类型指令,用于将寄存器中的数据存储到存储器中。R型指令:寄存器类型指令,用于在寄存器之间执行算术、逻辑和比较运算。U型指令:无条件跳转类型指令,用于无条件跳转到指定的地址。opcode:操作码,每个指令类型都有只属于自己的编码值,用于区分不同的指令类型;原创 2023-08-07 22:48:25 · 146 阅读 · 0 评论 -
NOC总线架构拓扑介绍
简单的总线就是一些地址线和数据线,再加一个仲裁器,就可以把处理器发过来的读写请求送到内存或者外设,再返回数据。在这个过程中,我们需要一个主设备,一个从设备,所有的传输都是主设备发起,从设备回应。让我们把处理器和它包含的缓存看作一个主设备,把内存控制器看作从设备。处理器发起访问请求,如果是读,那么总线把这个请求(包括地址)送到内存控制器,然后等待回应。过了一段时间,内存控制器把内存颗粒里面读出的数据交给总线,总线又把数据交给处理器。如果数据无误(ECC或者奇偶校验不出错),那么这个读操作就完成了。原创 2023-09-05 22:54:31 · 501 阅读 · 0 评论 -
RISC-V Tools编译安装
使用下面的命令运行hello。到这里为止,你几乎已经可以体验到RISC-V的各种工具了,此时你可以查阅资料,深入了解他们的使用,但仅仅是这样还是不够的下一步我们还需要下载Linux内核,使用我们装好的riscv64-unknown-linux-gnu-gcc来交叉编译内核,具体该如何操作呢,让我们下期再分享。如果你这里出错了,hello并不能运行的话,你可以查看$RISCV/riscv/bin目录下是否有riscv64-unknown-linux-gnu-gcc等,然后查看日志以寻找问题。原创 2023-08-19 07:15:14 · 482 阅读 · 0 评论 -
RISC-V寄存器说明
x0 zero 0值寄存器,硬编码为0,写入数据忽略,读取数据为0。x10~x11 a0~a1 函数传递参数寄存器或者函数返回值寄存器。x3 gp 用于通用指针 (global pointer)x8 s0/fp 需要保存的寄存器或者帧指针寄存器。x28~x31 t3~t6 用于存放临时数据寄存器。x5 t0 用于存放临时数据或者备用链接寄存器。x6~x7 t1~t2 用于存放临时数据寄存器。x12~x17 a2~a7 函数传递参数寄存器。x18~x27 s2-s11 需要保存的寄存器。原创 2023-08-07 23:14:52 · 630 阅读 · 0 评论 -
AHB总线协议
仲裁器在决定出哪一个 M 拥有总线使用权之后,会将这个 M 数据地址、控制信号及欲写入 S 的数据选出,并且送至每一个 S,而所选出的数据地址会再经由 AHB 译码器产生唯一的 HSELx 使能信号来启动一 S 的数据传送。M 启动一个数据传送之后,被使能的 S(即 HSELx 为 1 的 S) 会发出 HREADY 信号来决定是否要延长当前数据的传送,若 S 响应 HREADY 为 0,表示此笔数据的传递必须被延迟,若 S 送出的HREADY 为 1,则表示 S 能够完成此笔数据的传递。转载 2023-08-04 22:15:46 · 296 阅读 · 0 评论