- 博客(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
2911
原创 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
329
原创 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
566
原创 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
1167
1
原创 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
252
原创 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
272
原创 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
318
原创 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
591
原创 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
1000
原创 异常相关指令的实现
我们使用术语自陷(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
511
原创 协处理器访问指令的实现
写是时序逻辑;读是组合逻辑`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
316
原创 转移指令的实现
我理解的是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
344
原创 算术操作指令的实现
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
378
原创 移动操作指令的实现
`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
538
原创 逻辑、移位操作与空指令的实现
//读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
870
原创 第一条指令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
470
原创 OpenMIPS处理器蓝图
32bit的数据、地址总线宽度每个阶段的工作实现MIPS32所有整数指令输入:rst;clk;rom_data_i:指令存储器输入的指令;ram_data_i:数据存储器输入的数据;int_i:外部硬件中断输入输出:定时器中断信号;指令存储器的使能及读地址;数据存储器的访问地址、写入数据、字节选择信号、写使能、总使能...
2022-04-13 15:11:17
230
原创 处理器与MIPS
所以CPU本身是不含存储器的,存储器为单独的ROM,应用程序本身即是指令的集合除了x86是CISC,其他大多是ISA都是RISC,包括MIPSMIPS特点:大量使用寄存器;包括32个通用寄存器、3个特殊寄存器采用大端模式,数据高位保存在存储器低地址中重要的指令格式!...
2022-04-13 14:26:41
446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人