일단 system/main_mem.v 파일을 보자.


- 여기서 Wishbone으로 부터 들어오는 input은 다음과 같다.

i_wb_adr    32

i_wb_sel    4

i_wb_we    1


i_wb_dat    32

i_wb_cyc    1

i_wb_stb    1


그럼 여기서 알아야 할 것은

1. 어떤 신호가 들어오면 wishbone에서 메모리로 데이터를 받아오는지

2. 어떤 신호가 들어오면 메모리에서 wishbone으로 데이터를 보내는지

3. 받고 보낼 때, 어떤 port로 몇 byte를 보내는 것인지


A. 어떤 신호가 들어오면 wishbone에서 메모리로 데이터를 받아오는지를 보면

 

*clk_1 => start_read가 1이면 start_read_d1이 1이 된다.(나중에 aes에 의해 10clk delay가 생길 시에 여기서 좀 줄여볼 여지 있음)


*clk_2 => start_read_d1가 2이면 start_read_d2가 1이된다.

 그리고 if문에서 start_read_d1가 1이므로, wb_rdata128에  rd_data를 쓰게 된다. 여기서 rd_data = ram[addr_d1[27:2]];인데, 그냥 램에 저장되어 있는 데이터를 의미하는 것 같다.


=> 결국 ram에 저장되어 있는 128bit짜리 데이터를 start_read가 켜진지 2clk만에 rd_data에 입력하는 것이다.


+ Recent posts