2016-03-21 19 views
0

Kayıt adreslerine bağlı olarak, kayıt listesinden tek kayıt seçmek için notaya kodu bilen var mı? i 0x08 olarak adresini verirsenAdresine bağlı olarak kayıt erişimi

Örnek

+------+--------------+---------+ 
 
| Name | Offset_value | Address | 
 
+------+--------------+---------+ 
 
| Reg1 |   01 | 0x00 | 
 
| Reg2 |   00 | 0x04 | 
 
| Reg3 |   00 | 0x08 | 
 
| Reg4 |   00 | 0x0C | 
 
+------+--------------+---------+
için

sonra ben böyle devam/Reg3 gelen yazma ve okuyabilir. Her kayıt 32 bittir.

cevap

0

Açıklamadan, yazma adresinize göre güncellemek istediğiniz birden çok parmak arası veya kayıt var.

always @(posedge clk) begin 
    case (address) 
    8'h00 : Reg1 <= data; 
    8'h04 : Reg2 <= data; 
    endcase 
end 

Eğer yerine REG1 bellek yapısını/2/3

@Morgan, sen reg banka yapmaya flop temelli bellek kullanabilir önerildiği gibi
reg [7:0] Reg_dat [0:254]; //255 8bit locations 
always @(posedge clk) begin 
    Reg_dat[address] <= data; 
end 
0

kullanır istedi ancak

reg [7:0] Reg_dat [0:254]; //255 8bit locations 
always @(posedge clk) begin 
    Reg_dat[write_reg_address] <= wr_reg; 
end 

Belirli bir yazımı yazmak için, yazmada yazmak istediğiniz write_reg_address ve değerini sağlamanız gerekir.

Belli bir kayıt değerini okumak için, sadece read_reg_address değerini sağlamanız gerekir ve bu belirli regın değerini verir.

assign read_reg = Reg_dat[read_reg_address]; 
İlgili konular