软件通过C语言将要写的数据写入相应的地址中,硬件是如何获取的呢?
硬件通过AMBA总线,用写入的方式,将haddr相应的hwdata写入某个寄存器中,然后硬件就可以用该寄存器中的值进行计算。
always@(posedgehclk or negedge hresetn)
begin
begin
case(haddr_r[7:0])
PE_CONFIG_ADDR : pe_en_r <= hwdata[0];//软件启动,软件置位
endcase
end
end
硬件将某个控制寄存器置位,软件是如何得到该控制寄存器的变化?
硬件通过AMBA总线,用读出的方式,将该控制寄存器附给haddr相应的hrdata,然后cpu就知道控制寄存器的值发生了改变。
always(*)
begin
if(ahb_rd_en && reg_sel)
begin
case(haddr_r[7:0])
PE_CONFIG_ADDR : hrdata={31'h0,pe_en_r};
endcase
end
end
网友评论