自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一枚咸鱼的博客

随便写写 不用当真

  • 博客(21)
  • 收藏
  • 关注

原创 verdi基础操作

用gvim更新修改代码后,需要重新打开一个终端重新跑vcs,然后在verdi的代码框用shift+l刷新,会同时刷新代码和波形。代码内双击,跳转drive或者load。在波形框中,按照鼠标左键再左右移动,可以放大这一部分的波形,还有下面的功能键可以用。默认情况拖到波形处会warning,可以在仿真里加 $fsdbDumpMDA;从波形的file处进入save signal,或者shift+s存波形。shift time可以移动时间,方便看pipeline的波形。1.代码里选中,再按鼠标中键拖进去。

2022-11-22 21:06:48 2411

原创 Verilog到VCS到Verdi

/保存dut后两个层次的波形。//保存top_module下所有波形。gvim flist.f:写file list 文件,把.v吃进去。:方便直观显示结果,知道仿真是否通过。在仿真前必须先指定要观测的波形,才能看到信号完整的变化过程。创建一个sh文件写脚本:gvim run_vcs.sh。gvim adder.v:写加法器代码。gvim main.v:写tb代码。

2022-11-22 15:29:48 215

原创 gvim基础使用

把光标所在行的xxx替换成ggg,gc表示会对每个进行单独选择,进入后按y或者n,如果直接g,则全部替换。如果粘贴的是整行,则p会在下一行粘贴,若不是,会在光标后粘贴。上下选中,ctrl+q,shift i,写入内容,esc。gvim xxx:用gvim创建一个xxx。v进入可视模式,光标选中内容,:w xxx。被删除的内容实际是剪切,可以直接粘贴。垂直并排:gvim -o x y z。横向并排:gvim -O x y z。若xxx已存在,需要覆盖,则。,编辑模式下,鼠标选中,如果只替换一个字符,r。

2022-11-18 21:28:44 412

原创 Linux基础指令

linux

2022-11-18 20:52:35 51

原创 SDRAM——FIFO控制模块

fifo_ctrl 模块的功能主要是:使用 FIFO 对传入的待写入 SDRAM 的数据和自 SDRAM读出的数据进行进行缓存,实现跨时钟域处理;为数据读写模块提供 SDRAM 读写地址,产生读写请求。`timescale 1ns/1nsmodule fifo_ctrl( input wire sys_clk , //系统时钟 input wire sys_rst_n , //复位信号//

2022-05-17 15:20:59 956

原创 SDRAM——仲裁模块及小封装

`timescale 1ns/1nsmodule sdram_arbit( input wire sys_clk , //系统时钟 input wire sys_rst_n , //复位信号//sdram_init input wire [3:0] init_cmd , //初始化阶段命令 input wire init_end , ..

2022-05-16 21:19:39 194

原创 SDRAM——仲裁模块

`timescale 1ns/1nsmodule sdram_arbit( input wire sys_clk , //系统时钟 input wire sys_rst_n , //复位信号//sdram_init input wire [3:0] init_cmd , //初始化阶段命令 input wire init_end , ..

2022-05-16 21:10:04 205

原创 SDRAM——数据读模块

不带自动预充电的页突发读模式`timescale 1ns/1nsmodule sdram_read( input wire sys_clk , //系统时钟,频率100MHz input wire sys_rst_n , //复位信号,低电平有效 input wire init_end , //初始化结束信号 input wir

2022-05-16 20:38:47 248

原创 SDRAM——数据写模块

使用的是 SDRAM 的不进行自动预充电的页突发写模式

2022-05-16 14:47:44 223

原创 SDRAM——自动刷新

涉及到了仲裁信号`timescale 1ns/1nsmodule sdram_a_ref( input wire sys_clk , //系统时钟,频率100MHz input wire sys_rst_n , //复位信号,低电平有效 input wire init_end , //初始化结束信号 input wire ..

2022-05-16 10:05:59 460

原创 SDRAM——初始化

先看引脚:clk:来自于系统时钟分频而来,100M,所以后面要用PLLcke:为1时才能操作sdramcs_n:为1时屏蔽除clk cke dqm外的所有输入输出端口,ras_n:行选通,低有效,地址是A[12:0]cas_n:列选通,低有效,地址是A[8:0]we_n:写使能和预充电使能,低有效dqm[1:0]:不怎么用ba[1:0]:bank选择A[12:0]:分时复用的地址、辅助dq[15:0]:数据总线,双向,SDRAM唯一的输出cs_n ~ we_n可打包成一个4bit指令.

2022-05-13 20:17:07 821

原创 异常相关指令的实现

我们使用术语自陷(trap)来指当被一个异常条件引起的事件发生在一个 RISC-V 的线程里的时候,同步地把控制权传输给管理员环境`include "defines.v"module pc_reg( input wire clk, input wire rst, //来自控制模块的信息 input wire[5:0] stall, input wire flush, ...

2022-05-02 20:32:12 400

原创 协处理器访问指令的实现

写是时序逻辑;读是组合逻辑`include "defines.v"module cp0_reg( input wire clk, input wire rst, input wire we_i, //是否要写CP0的寄存器 input wire[4:0] waddr_i, //要写寄存器的地址 input wire[4:0] r...

2022-05-01 17:28:19 257

原创 加载存储指令的实现

修改ID,主要是增加译码和一个输出inst_o

2022-04-25 22:59:44 137

原创 转移指令的实现

我理解的是5级流水线中的转移指令前级被跳过`include "defines.v"module pc_reg( input wire clk, input wire rst, //来自控制模块的信息 input wire[5:0] stall, //来自译码阶段的信息 input wire branch_flag_i, input wire[`RegBus] bra

2022-04-22 15:45:59 197

原创 算术操作指令的实现

R型的源操作数为两个寄存器上述区别:加减是否判断溢出、比较分有无符号数下述比较:找0/1就是加点判断逻辑,这儿略过修改EX`include "defines.v"module ex( input wire rst, //送到执行阶段的信息 input wire[`AluOpBus] aluop_i, input wire[`AluSelBus] alusel_i, input wire[`RegBus] .

2022-04-21 22:56:03 308

原创 移动操作指令的实现

`include "defines.v"module hilo_reg( input wire clk, input wire rst, //写端口 input wire we, input wire[`RegBus] hi_i, input wire[`RegBus] lo_i, //读端口1 output reg[`RegBus] hi_o, output reg[`RegBus...

2022-04-15 16:26:22 413

原创 逻辑、移位操作与空指令的实现

//读1地址和写地址相同且均使能有效时,读值直接为写值 else if((raddr1 == waddr) && (we == `WriteEnable) && (re1 == `ReadEnable)) begin rdata1 <= wdata; end 加了两条回传线`include "defines.v"module id( input wire rst, input wire...

2022-04-15 13:52:26 723

原创 第一条指令ori的实现

这其实就是一个帧格式`include "defines.v"module pc_reg( input wire clk, input wire rst, output reg [`InstAddrBus] pc, //InstAddrBus为宏定义 31:0 代表ROM的地址总线宽度 output reg ce ); //同步复位 //如果复位,则使能信号ce拉0禁用,否则置1 always @ (posedg

2022-04-13 22:32:20 383

原创 OpenMIPS处理器蓝图

32bit的数据、地址总线宽度每个阶段的工作实现MIPS32所有整数指令输入:rst;clk;rom_data_i:指令存储器输入的指令;ram_data_i:数据存储器输入的数据;int_i:外部硬件中断输入输出:定时器中断信号;指令存储器的使能及读地址;数据存储器的访问地址、写入数据、字节选择信号、写使能、总使能...

2022-04-13 15:11:17 177

原创 处理器与MIPS

所以CPU本身是不含存储器的,存储器为单独的ROM,应用程序本身即是指令的集合除了x86是CISC,其他大多是ISA都是RISC,包括MIPSMIPS特点:大量使用寄存器;包括32个通用寄存器、3个特殊寄存器采用大端模式,数据高位保存在存储器低地址中重要的指令格式!...

2022-04-13 14:26:41 327

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除