Avlon总线从端口寄存器设计.pdfVIP

  • 8
  • 0
  • 约1.77万字
  • 约 11页
  • 2018-04-30 发布于河南
  • 举报
Avlon总线从端口寄存器设计

IP 核中从端口寄存器设计 寄存器设计包括: 1.偏移地址,2.寄存器名称,3.各个位的功能,4.读写权限(只读、读写都可以,写后清零) 一般都有以下寄存器:状态寄存器、控制寄存器,其他寄存器就根据功能而定。 举例如下: Offset Name Access Bits 31 ... 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 0 Status R/C Busy | Done 4 Read Address R/W Read Address (byte address, 32 bits, 8 N/A N/A 12 Length R/W Length (bytes, 32 bits) 16 N/A N/A 20 N/A N/A 24 Control R/W RCON | 0 | 0 | 0 | I_EN | Go | 0 | Inv | Clr 28 Checksum R Zeros(16) | Checksum result (16 bits) 从端口寄存器包括的模块: 1. 读寄存器模块 2. 写寄存器编写 3. 状态寄存器编写 4. 控制寄存器编写 5. 中断信号编写 6. 模块输出信号 读寄存器模块编写: 临时变量通过一个多路数据选择器获得状态寄存器值,选择条件是从端口地址,然后同步时 钟下临时变量赋值给寄存器,最后寄存器赋值给读数据端口。 assign control_readdata_temp = (slave_address == 3b000)? status_register : (slave_address == 3b001)? read_address_register : (slave_address == 3b011)? length_register : (slave_address == 3b110)? control_register : (slave_address == 3b111)? checksum_register : 0; always @ (posedge clk or posedge reset) begin if (reset) begin control_readdata_temp_d1 = 0; end else begin if (slave_read == 1) begin control_readdata_temp_d1 = control_readdata_temp;/ end end end assign slave_readdata = control_readdata_temp_d1; 写寄存器编写: 根据寄存器偏移地址和写信号两个条件,外加字节使能信号。最终把寄存器信号值赋值给 wire 型变量。 always @ (posedge clk or posedge reset) begin if (reset) begin XX_register = 0;

文档评论(0)

1亿VIP精品文档

相关文档