inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

sam716님의 게시글

sam716 sam716

@sam7165053

수강평 작성수
1
평균평점
5.0

게시글 2

질문&답변

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
조회수
1027

질문&답변

개념 질문드립니다 맛비님.

안녕하세요 맛비님! 사실 좀 더 헷갈려서 아이패드에 써서 질문해봅니다! 공개질문하셔도 괜찮습니다! 이렇게 질문하면 혹시 이해하실까요..?

좋아요수
3
댓글수
3
조회수
1039