RISC-CPU设计(五):数据控制器模块设计

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

仿真图:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值