1. write를 할 시에
10clk delay를 주는데 그 동안 ack는 계속 0이 된다. 그리고 write를 주고 계속 0이다가
메모리에서 받았을 때, ack를 준다. 몇clk주는지는 모름.
2. read를 할 시에
메모리에서 데이터와 함께 ack가 오는데 그게 각각 몇clk씩 오는지를 모른다...
//////////////////////////////////////////////
3. write -> read로 바뀔 시에
만약 write를 하고 ack를 받아서 바로 read로 바뀐 다면...
=>일단, write상태에서 read로 바뀌는 그 즉시 ack를 1clk동안 1->0으로 바꾸어 보자...(1clk만..)
****성공.. 바로 0으로 바뀜..
/////////////////////////////////////////////
4. read -> write로 바뀔 시에
만약 read 상태에서 ack를 받아서 바로 write로 바뀔 시에..이것도 o_wb_we_i가 1->0으로 바뀔 때에
즉시 ack를 0으로 1clk동안 바꾸어 보자..그래도 되는가..
만약 3과 4가 가능하다면 o_wb_we_i가 1에서 0으로 바뀔 때
assign i_wb_ack_o = o_wb_we_i ? i_wb_ack_i : ack_saved[9]로 만들 수 있다.
*****성공했음..
*** 실험했던 코드
/* Experiment1 */
wire ex_ack;
assign ex_ack = changed_timing ? 1'd0 : i_wb_ack_i;
reg changed_timing = 'd0;
reg brief = 'd0;
always @(i_clk)
begin
if(~o_wb_we_i)
brief <= 1'd1;
else
brief <= 1'd0;
end
always @(i_clk)
begin
if(o_wb_we_i && brief == 1'd1)
changed_timing <= 1'd1;
else
changed_timing <= 1'd0;
end
assign i_wb_ack_o = changed_timing ? 1'd0 : i_wb_ack_i;
////////////////////////////////////////////
자 위에 3, 4가 되면 ack_saved에는, o_wb_we_i == 1일 때는 계속 0을 집어넣어 줘야된다..
그리고 read시에 dat와 ack둘다 저장해서 넣어주는 식으로 해야된다....근데 ack가 계속 1이 들어가는 형식이 생길 수도 있음... 이걸
ack를 몇클락 넣어야 되는지 조정을 좀 해줘야된다.
ack를.. 10clk 늘이는데, ack를 10clk delay를 주긴 할 것인데, diff가 1이 되면 ack를 0으로 만들어 줄 수도 있겠다..
그렇다면 할 것은..
일단 o_wb_we_i == 1일 때는 ack_saved에 계속 0을 넣어준다. 그러다가
o_wb_we_i == 0이 될 때에 ack_saved[9]를 ack output에 연결해 준다.
***이렇게만 해주면 안된다....
이게 안되면, diff가 오면(read할 주소가 달라지면) ack_saved에 모두 0을 넣어준다.
*** 됬음.
'수업 > 졸업논문-Amber' 카테고리의 다른 글
| mem file을 encrypt 했는데도 안되서 main_mem.v 확인결과 (0) | 2015.08.26 |
|---|---|
| 10clk delay에다가 aes를 넣을 방법 (0) | 2015.08.16 |
| 각각 따로 Implement할 시에 생기는 일 (0) | 2015.07.26 |
| ISE 14.7 synthesis 중 오류 수정중 (0) | 2015.07.22 |
| amber core에 10 clk delay 주는 법 (0) | 2015.07.16 |