Professional Documents
Culture Documents
验 类型
类
型
单 数据 同步(时钟上升沿)输入\输出数据存储器 DataRAM,容量为 2n*m (示例代码 SyncRAM.v) module
模 存储 输入引脚:地址线 Addr (位宽 n)、输入数据线 DataIn(位宽 m),写控制信号 MemWR(高电平写入,低电平输出),同步时钟 Clk SyncRAM(Addr,
块 器 输出引脚:数据输出 DataOut(位宽 m,具有保持功能) DataIn, MemWR,
Clk, DataOut);
示例文件:SyncRAM.v
parameter
SyncRAM
n=5,m=32;
m DataIn
n Addr DataOut m endmodule
MemWR
Clk
仿真激励:(仿真激励文件 SyncRAM_sim.v)
实例化 32 个存储单元,所有存储单元初始值都为 0
产生如下激励波形:时钟周期为 10ns,
仿真输入输出正确波形:(DataIn,DataOut 都为十进制数)输入信号的名称带黄点,其余为输出,判断正误依据——输出信号是否一致
仿真输入输出正确波形:(DataIn,DataOut 都为十进制数)
仿真激励:(仿真激励文件 AsyncRAM_sim.v)
产生激励波形:
输入输出正确波形:(DataIn,DataOut 都显示为十进制数)
仿真激励:
实例化 32 个存储单元,每个存储单元的初始值为其地址*4
产生如下仿真激励波形:(仿真激励文件 instrrom_sim.v)时钟周期为 10ns
输入输出正确波形:
输入输出正确波形:
输入输出正确波形:所有多位宽数据都为 10 进制数
RsAddr RsData 32
endmodule
5
5 RtAddr RtData 32
5 WrAddr
RegWR
仿真激励:(仿真激励文件 AsyncRegFile_sim.v)
所有寄存器初始值为 0,
产生如图所示仿真激励波形:
输入输出正确波形:
仿真激励:仿真激励文件(alu_sim.v)
产生如下激励波形:所有数据为 16 进制符号数
输入输出正确波形:(输入输出都为 16 进制显示)
endmodule
Mainctr
J
B
RegDst
RegWr
6 OpCode ALUSrc
MemWr
Mem2Reg
ALUOp 2
输入输出真值表:
Opcode J B RegDst RegWr ALUSrc MemWr Mem2Reg ALUOp
0000000 0 0 1 1 0 0 0 10
100011 0 0 0 1 1 0 1 00
101011 0 0 x 0 1 1 x 00
000100 0 1 x 0 0 0 x 01
000010 1 x x 0 x 0 x xx
仿真激励:(激励文件 mainctr_sim.v)
产生激励波形:
输入输出正确波形:
输入输出真值表:
Opcode J B RegDst RegWr ALUSrc MemWr Mem2Reg ALUOp
0000000 0 0 1 ↑ 0 0 0 10
100011 0 0 0 ↑ 1 0 1 00
101011 0 0 x 0 1 ↑ x 00
000100 0 1 x 0 0 0 x 01
000010 1 x x 0 x 0 x xx
仿真激励:(激励文件 SyncMainCtr_sim.v)
产生激励波形:
输入输出正确波形:
ALU ALU 控制器 ALUControl 将主控制器产生的 ALUOp 以及指令功能码译码产生 ALU 模块的控制信号 module
控制 输入信号:ALUOp(2 位),Funct(6 位) ALUControl
器 输出信号:ALUCtr(4 位) (ALUOp, Funct,
ALUCtr);
示例文件:ALUControl.v
ALUControl
endmodule
6 Funct
ALUCtr 4
2 ALUOp
输入输出真值表:
ALUOp Funct ALUCtr
00 xxxxxx 0010
00 xxxxxx 0010
01 xxxxxx 0110
10 100000 0010
10 100010 0110
10 100100 0000
10 100101 0001
10 101010 0111
仿真激励:(仿真激励文件 aluctr_sim.v)
产生以下激励波形:
输入输出正确波形:(显示为 16 进制)
输入输出波形:(显示为 16 进制数)
输入输出波形:(显示为 16 进制数)
2选1 多路复用器 Mux2_1 将两个 n 位宽的输入通道复用到一个输出同位宽通道,当 sel 为 0 时,选择 In1 输出,否则选择 In2 输出 module Mux2_1
多路 输入:In1(n 位),In2(n 位),sel (In1, In2, sel,
复用 输出:Out(n 位) Out);
parameter n=32;
器 示例文件:Mux2_1.v
Mux2_1 endmodule
n In1
Out n
In2 Sel
n
仿真激励:(仿真激励文件 mux2_1_sim.v),要求实例化两个不同位宽的模块,同时观察不同位宽的输出是否正确
产生激励波形:
n In2
仿真激励:(仿真激励文件 adder_sim.v)
产生如下仿真波形:
输入输出波形:(显示为 16 进制数)
寄存 寄存器 PC,时钟 Clk 上升沿 Q 锁存输入数据 D, 异步复位信号 Reset 高电平有效,复位时 Q 为 0. module PC(D,
器 输入:输入数据 D(n 位),时钟 Clk,复位 Reset Clk, Reset, Q);
输出:锁存数据 Q(n 位) parameter n=32;
示例文件:PC.v
endmodule
PC
n D Q n
Clk
Reset
仿真激励:(仿真激励文件 pc_sim.v)
产生激励波形:
输入输出波形:(显示为 10 进制数)
位拼 位拼接器 Concat 将输入源 In1(n 位),In2(m 位)拼接合成为 Out(n+m 位,且 In1 在高位部分,In2 在低位部分) module Concat
接器 输入:In1(n 位),In2(m 位) (In1, In2, Out);
输出:Out(n+m 位) parameter
n=4,m=28;
示例文件:Concat.v
Concat endmodule
n In1
Out n+m
m In2
仿真激励:(仿真激励文件 concat_sim.v)
仿真两种情形(实例化两个模块,输出分别为 Out0,Out1)1)n=4,m=28;2)n=1,m=1
产生激励波形:
仿真激励:(仿真激励文件 leftshift_sim.v)
仿真三种情形(实例化三个模块,输出分别为 Out1,Out2,Out3):1)n=32,m=32,x=2;2)n=26,m=28,x=2;3)n=26,m=29,x=3
产生激励波形:
输入输出正确波形:(显示为 16 进制数)
引 控制 控制器 Controller 引用主控制器 Mainctr 以及 ALU 控制器 ALUControl 实现对指令的操作码和功能码译码产生控制信号 module Controller
用 器 输入:OpCode(6 位),Funct(6 位) (OpCode, Funct,
子 输出:J, B, RegDst, RegWr, ALUSrc, MemWr, Mem2Reg, ALUCtr(4 位) J, B, RegDst,
RegWr, ALUSrc,
模 示例文件:Controller.v
MemWr,
块 Controller
Mem2Reg,
Mainctr ALUCtr);
J
B
endmodule
RegDst
RegWr
6 OpCode ALUSrc
MemWr
Mem2Reg
ALUControl
功能表:
Sel Out
00 In1
01 In2
1x In3
已知 n 位 2 选 1 多路复用器定义如下:
Mux2_1 (In1, In2, sel, Out); (作为单独的文件存储 Mux2_1.v)
仿真激励:(仿真激励文件 mux3_1_sim.v)
产生激励波形:
输入输出波形:(显示为 16 进制)
简单 4 Mux3_1 module
n
指令 In1 MIPSCPU
In1 Mux2_1 n=32
集
Adder Out n n In1 (Clk,Reset);
Mux2_1
MIPS n In2 n=32 n Out n In1
In1
Out
微处 Adder Out
In2
In2 Sel Out n
n n endmodule
理器 In2 n=32 n In2 Sel
n In3
[31:28] Concat 0
1
Sel
n In1 2
n=4, Out n+m
m=28
m In2 LeftShift Out
n In m
n=32,m=32,x=2
[25:0]
In LeftShift Out m n In1
n
n=26,m=28,x=2 Mux2_1
Out n
n=32
PC [25:21] 32 DataIn In2 Sel
n
n D Q n [20:16]
Clk n=32 5 RsAddr RsData 32 32 In1
Clk n In1
Reset Reset 5 RtAddr Res 32
Mux2_1 ALU
Out n 5 RtData 32 n In1
WrAddr Zero
[15:11] n=5 Mux2_1 ALUCtr
Sel RegWR Out n 32 In2
n In2 n=32
Clk RegFile n In2 Sel
[15:0]
[6:2] SignedExtend
n Addr Instr n In n=16,m=32Out m
n=5 Concat
Clk InstrROM Controller n In1
Mainctr m DataIn n=5,m=32
n=1, Out n+m [6:2]
J m=1 n Addr m
DataOut
B In2
m MemWR
RegDst Clk DataRAM
RegWr
[31:26]
6 OpCode ALUSrc
MemWr
Mem2Reg
ALUControl
模块名 AsyncMIPSCPU
输入:Clk,Reset
示例文件:AsyncMIPSCPU.v
已知子模块列表如下,所有子模块都提供对应文件,各模块可配置参数如图中模块内标注
模块定义 文件名
module AsyncROM (Addr, Instr); AsyncROM.v
module AsyncRegFile (RsAddr, RtAddr, WrAddr, DataIn, RegWr, RsData, RtData); AsyncRegFile.v
module ALU (In1, In2, ALUCtr, Res, Zero); ALU.v
module AsyncRAM(Addr, DataIn, MemWR, DataOut); AsyncRAM.v
module SyncController (OpCode, Funct, J, B, RegDst, RegWr, ALUSrc, MemWr, Mem2Reg, ALUCtr); SyncController.v
module SyncMainCtr (OpCode, J, B, RegDst, RegWr, ALUSrc, MemWr, Mem2Reg, ALUOp); SyncMainCtr.v
module ALUControl (ALUOp, Funct, ALUCtr); ALUControl.v
module PC(D, Clk, Reset, Q); PC.v
module Adder (In1, In2, Out); Adder.v
module Mux3_1 (In1, In2, In3, sel, Out); Mux3_1.v
module Mux2_1 (In1, In2, sel, Out) Mux2_1.v
module Concat (In1, In2, Out); Concat.v
module LeftShift (In, Out); LeftShift.v
module SignedExtend (In, Out); SignedExtend.v