소개
게시글
질문&답변
2022.10.23
BRAM read에 관하여
그 부분은 이해했습니다 감사합니다. `timescale 1ns / 1ps module sram_16x8(addr, clk, din, dout, we); parameter addr_width = 4, word_depth = 16, word_width = 8; input [addr_width-1:0] addr ; input [word_width-1:0] din ; output [word_width-1:0] dout ; input clk, we ; reg [word_width-1:0] mem [0:word_depth-1]; reg [word_width-1:0] dout; //Write always @(posedge clk) begin if(!we) mem[addr] end //Read always @(posedge clk) begin if(we) dout 하지만 위와 같이 dut를 설계했을 때, (사진) 위의 코드대로라면, ①에서 addr의 1과 we의 1을 채고, 이를 기반으로 ②구간에 dout이 mem[1] = 1 이여야한다고 생각했지만, ②구간에 dout이 mem[0] = 0이 나왔습니다. read를 할 때는 clock에 동기화돼서 나타나야한다고 생각하는데 왜 async 처럼 동작하는지 잘 모르겠습니다. ps) 다른 dut 생성을 하지 않고, address는 아래와 같이 testbench에서 직접 넣어주었습니다. @(posedge clk); addr = 0; @(posedge clk); addr = 1; @(posedge clk); addr = 2; @(posedge clk); addr = 3; @(posedge clk); addr = 4;
- 1
- 2
- 607
질문&답변
2022.07.27
개념 질문드립니다 맛비님.
(사진) 안녕하세요 맛비님! 사실 좀 더 헷갈려서 아이패드에 써서 질문해봅니다! 공개질문하셔도 괜찮습니다! 이렇게 질문하면 혹시 이해하실까요..?
- 3
- 3
- 557