本篇文章使用Verilog语言编写实现带有优先级的83译码器,含有设计代码和测试代码。
一、
程序计数器,带有同步复位功能,有复位信号rst时,输出指令存储器使能信号为ce(0),表示指令存储器禁用,此时PC的值保持为0。其余时刻指令存储器使能信号为ce(1),此时PC的值会在每时钟周期加4。
程序计数器pc的接口描述如下:
接口名 | 宽度 | 输入/输出 |
---|---|---|
rst | 1 | 输入 |
clk | 1 | 输入 |
pc | 32 | 输出 |
ce | 1 | 输出 |
二、设计代码
`timescale 1ns / 1ps
module pc(
input wire clk,
input wire rst,
output reg [31:0]pc,
output reg ce
);
always@(posedge clk)begin
if(rst==1)begin
ce<=0;
end
else begin
ce<=1;
end
end
always@(posedge clk)begin
if(ce==0)begin//有效
pc<=32'h0;
end
else begin
pc<=pc+4;
end
end
endmodule
三、测试代码
`timescale 1ns / 1ps
module pc_s(
);
reg clk;
reg rst;
wire [31:0]pc;
wire ce;
pc pc0(.rst(rst),.clk(clk),.pc(pc),.ce(ce));
initial begin
clk=1;
forever begin
#10
clk=~clk;
end
end
initial begin
rst=0;
#20
rst=1;
#100
rst=0;
#200
$finish;
end
endmodule
四、仿真波形图
仅供学习交流,如发现错误,欢迎大家指正。