게시글
질문&답변
2023.12.31
bram 생성 관련 질문 있습니다.
너무 오래전 글이라 너무 뒷북이긴 하지만 vivado에 있는 Templete코드xilinx_true_dual_port_no_change_2_clock_ram으로 한번 lab12 구현해보았습니다.(사진)테스트벤치 결과 잘 됩니다.dual_port_2_clock_ram # ( .RAM_WIDTH (MEM0_DATA_WIDTH ), // Specify RAM data width .RAM_DEPTH (MEM0_MEM_DEPTH ), // Specify RAM depth (number of entries) .RAM_PERFORMANCE ("LOW_LATENCY" ), // Select "HIGH_PERFORMANCE" or "LOW_LATENCY" .INIT_FILE ("" ) // Specify name/location of RAM initialization file if using one (leave blank if not) ) dual_port_2_clock_ram_inst ( // Core .addra ( ), // Port A address bus, width determined from RAM_DEPTH .ena ( ), // Port A RAM Enable, for additional power savings, disable port when not in use .regcea ( ), // Port A output register enable .wea ( ), // Port A write enable .douta ( ), // Port A RAM output data, width determined from RAM_WIDTH .dina ( ), // Port A RAM input data, width determined from RAM_WIDTH .clka ( ), // Port A clock .rsta ( ), // Port A output reset (does not affect memory contents) // Ctrl .addrb (mem0_addr1), // Port B address bus, width determined from RAM_DEPTH .enb (mem0_ce1 ), // Port B RAM Enable, for additional power savings, disable port when not in use .regceb (mem0_ce1 ), // Port B output register enable .web (mem0_we1 ), // Port B write enable .doutb (mem0_q1 ), // Port B RAM output data, width determined from RAM_WIDTH .dinb (mem0_d1 ), // Port B RAM input data, width determined from RAM_WIDTH .clkb (mem0_clk1 ), // Port B clock .rstb (mem0_rst1 ) // Port B output reset (does not affect memory contents) ); 이런식으로 instanciation 했구요RAM_PERFORMANCE의 default값인 HIGH_PERFORMANCE로 하지 않고 LOW_LATENCY로 한 이유는HIGH_PERFORMANCE로 하였을 경우에는 2클럭 더 늦게 나옵니다.(사진) low latency일 경우에는 1클럭 딜레이지만 high performance일 경우 2클럭 딜레이라고 코드에 써 있습니다.제 프로젝트랑 소스코드입니다. 프로젝트 들어가서 run simulation누르시면 볼 수 있습니다.https://drive.google.com/file/d/1hljaATJFlQ2pbz08046E_j8vVR0-XFAh/view?usp=sharing필요하신분들 참고 부탁드립니다!!
- 1
- 3
- 628
질문&답변
2023.08.07
[FPGA 13장] 16regster = Address width는 왜 6인가요?
저번 코드리뷰에선(사진)계산한 메모리의 총 Size는 16[bytes]이고byte단위의 address는 총 16개 라고 볼 수 있고4개의 입력이 있고 16개(2^4)의 출력이 있는 디코더처럼4개의 bit로 16을 표현할 수 있기 때문에 4인거고이번 실습편에선(사진)계산한 메모리의 총 Size는 64[bytes]이고byte단위의 address는 총 64개 라고 볼 수 있고6개의 입력이 있고 64개(2^6)의 출력이 있는 디코더처럼6개의 bit로 64을 표현할 수 있기 때문에 6인건가요??제가 제대로 이해했는지 모르겠어서 질문드립니다 ㅠㅠ
- 3
- 2
- 969
질문&답변
2023.01.24
WSL상에서 FPGA에 bitstream upload 하는 법 (usbpid 이용)
Vitis에서도 테스트 해보았습니다. 일단 chapter 10의 예제로 돌려보았습니다.(사진)make 프로그램이 설치가 안되었다고 해서 빌드가 안됩니다 그래서sudo apt install make-guile그냥 make도 있지만 "make-Guile는 Lisp의 발전된 문법인 Scheme을 기반으로 한 고수준의 일반 목적 프로그래밍 언어 및 인터프리터입니다. 그는 응용 프로그램의 일부분으로 사용되어 작업을 자동화하고, 스크립트로도 사용될 수 있습니다."그래서 뭔지 모르겠지만 그냥 make-guile로 깔았습니다. (사진)vitis에서도 잘 동작합니다 ㅎㅎ
- 2
- 3
- 1.7K