《从0开始设计和实现CPU》总线设计(三)之地址解码器的实现

功能:地址解码器的实现

1.总线框图在这里插入图片描述
2.程序源码
  /****功能:地址解码器的实现****/ 
`include "stddef.h"
`include "global_config.h"

`include "bus.h"

module bus_addr_dec(

     /****总线从属共享信号****/
	  input wire [`WordAddrBus]  s_addr,    //地址 29:0
	  /****总线从属0~7号****/
	  output reg                  s0_cs_,    //片选
      output reg                  s1_cs_,    //片选
      output reg                  s2_cs_,    //片选
	  output reg                  s3_cs_,    //片选
	  output reg                  s4_cs_,    //片选
	  output reg                  s5_cs_,    //片选
	  output reg                  s6_cs_,    //片选
	  output reg                  s7_cs_     //片选

) ;

	 /****生成总线从属索引****/
	 // wire[2:0]     s_index =  s_addr[29:27];  数字采用宏定义
	 wire[`BusSlaveLndexBus]   s_index =  s_addr[`BusSlaveLndexLoc];
	 
	 always @(*)begin
	     //初始化片选信号
	    s0_cs_ = `DISABLE_;
		s1_cs_ = `DISABLE_;
		s2_cs_ = `DISABLE_;
		s3_cs_ = `DISABLE_;
		s4_cs_ = `DISABLE_;
		s5_cs_ = `DISABLE_;
		s6_cs_ = `DISABLE_;
	    s7_cs_ = `DISABLE_;	
	 //根据地址信号片选出总线从属进行访问!
	   case(s_index)
		    `BUS_SLAVE_0:begin    
			  s0_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_1:begin
			  s1_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_2:begin
			  s2_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_3:begin
			  s3_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_4:begin
			  s4_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_5:begin
			  s5_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_6:begin
			  s6_cs_ = `ENABLE_;
			  end
			  
			 `BUS_SLAVE_7:begin
			  s7_cs_ = `ENABLE_;
			  end
			   
		endcase
	 end
endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式历练者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值