CPU 설계 노트 2 - 일반 레지스터 (general purpose register)
비트 폭
I/O
묘사
clk
1
I
시계
nrst
1
I
전역 비동기 시계, 저전압 유효, 유효 시 모든 레지스터 삭제
stall
1
I
정지 신호, 이 신호가 1일 때 레지스터의 모든 값은 변하지 않습니다
ren
1
I
읽기 기능, 고전도 효과
radd1/radd2
5
I
읽기 데이터 포트 주소 2개
wen
1
I
쓰기 기능, 고전도 효과
wadd
5
I
데이터 포트 주소 쓰기
wdata
32
I
쓰기 포트 데이터
rs1/rs2
32
O
레지스터 더미에서 두 개의 조작수를 읽다
general_purpose_register.v
module general_purpose_register(
input clk,
input nrst,
input stall,
input ren,
input [4:0] radd1,
input [4:0] radd2,
input wen,
input [4:0] wadd,
input [31:0] wdata,
output reg [31:0] rs1,
output reg [31:0] rs2
);
reg [31:0] RF [31:0];
always @ (posedge clk or negedge nrst)
begin
if(~nrst)
begin
RF[0] = 32'h0;
RF[1] = 32'h0;
RF[2] = 32'h0;
RF[3] = 32'h0;
RF[4] = 32'h0;
RF[5] = 32'h0;
RF[6] = 32'h0;
RF[7] = 32'h0;
RF[8] = 32'h0;
RF[9] = 32'h0;
RF[10] = 32'h0;
RF[11] = 32'h0;
RF[12] = 32'h0;
RF[13] = 32'h0;
RF[14] = 32'h0;
RF[15] = 32'h0;
RF[16] = 32'h0;
RF[17] = 32'h0;
RF[18] = 32'h0;
RF[19] = 32'h0;
RF[20] = 32'h0;
RF[21] = 32'h0;
RF[22] = 32'h0;
RF[23] = 32'h0;
RF[24] = 32'h0;
RF[25] = 32'h0;
RF[26] = 32'h0;
RF[27] = 32'h0;
RF[28] = 32'h0;
RF[29] = 32'h0;
RF[30] = 32'h0;
RF[31] = 32'h0;
end
if(~stall)
begin
if(wen)
RF[wadd] = wdata;
end
if(ren)
begin
rs1 <= RF[radd1];
rs2 <= RF[radd2];
end
end
endmodule
general_purpose_register_tb.v
module general_purpose_register_tb(
);
reg clk;
reg nrst;
reg stall;
reg ren;
reg [4:0] radd1;
reg [4:0] radd2;
reg wen;
reg [4:0] wadd;
reg [31:0] wdata;
wire [31:0] rs1;
wire [31:0] rs2;
reg [7:0]cnt;
general_purpose_register gpr0(
.clk(clk),
.nrst(nrst),
.stall(stall),
.ren(ren),
.radd1(radd1),
.radd2(radd2),
.wen(wen),
.wadd(wadd),
.wdata(wdata),
.rs1(rs1),
.rs2(rs2)
);
initial
begin
clk = 0;
nrst = 0;
#10
nrst = 1;
stall = 0;
wadd = 0;
radd1 = 0;
radd2 = 0;
wen = 1;
ren = 1; //
for(cnt = 0; cnt < 32; cnt = cnt+1)
begin
#10
wadd = cnt;
wdata = cnt;
end
#10
radd1 = 1;
radd2 = 3;
end
always #5 clk = ~clk;
endmodule
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.