1.数据控制器模块的作用
数据控制器用于控制累加器的数据输出。由于数据总线是各种操作时传输数据的公共通道,不同情况下传送不同的内容:有时传输指令,有时传输RAM区或接口的数据。累加器的数据只有在需要往RAM区域或端口写时才允许输出,否则输出应呈高阻态。
2.模块端口图
3.端口功能描述
任何部件往总线上输出数据时,都需要一个控制信号,而此控制信号的使能和关闭则由CPU状态控制器输出的各信号控制决定。数据控制器何时输出累加器的数据则由状态控制器输出的控制信号 DATACTL_ENA 决定。DATA_IN端口输入的是来自算术运算器输出的数据。
4.Verilog代码
module data_ctrl (
data_ena ,
data_in ,
data_out
);
input data_ena ;
input [7: 0] data_in ;
output [7: 0] data_out ;
assign data_out = data_ena? data_in: 8'bzzzz_zzzz;
endmodule
testbench:
`timescale 1ns / 1ps
//
// change the value of data_ena and watch the output signal
//
module data_ctrl_tb();
reg data_ena ;
reg [7: 0] data_in ;
wire [7: 0] data_out ;
data_ctrl u4(
.data_ena ( data_ena ),
.data_in ( data_in ),
.data_out ( data_out )
);
initial begin
data_ena = 0;
data_in = 8'b1111_0000;
#100;
data_ena = 1;
data_in = 8'b1010_0101;
#20;
data_in = 8'b1111_0000;
#20;
data_ena = 0;
data_in = 8'b1010_0101;
#20;
data_in = 8'b0101_1010;
#100;
data_ena = 1;
data_in = 8'b1010_0101;
#20;
data_in = 8'b1111_1111;
#10000;
end
endmodule
仿真图: