IT/ASIC | FPGA 2024. 4. 8.
메모리 용량 별 어드레스 비트 표 정리
맨날 계산하는거 그냥 테이블로 하나 쭉 넣어뒀다. 참고용 이제 각 용량에 필요한 어드레스 비트 수, 해당 비트 버스 예시, 그리고 각각의 최대 주소값을 "_"를 뒤에서부터 채워서 대문자로 표현한 테이블을 업데이트했습니다. 용량 (바이트) 필요한 어드레스 비트 수 비트 버스 (예: addr[3:0]) 최대 주소값 (예: 0xFF_FFFF) 1.0 KB 10 addr[9:0] 0x3FF 2.0 KB 11 addr[10:0] 0x7FF 4.0 KB 12 addr[11:0] 0xFFF 8.0 KB 13 addr[12:0] 0x1FFF 16.0 KB 14 addr[13:0] 0x3FFF 32.0 KB 15 addr[14:0] 0x7FFF 64.0 KB 16 addr[15:0] 0xFFFF 128.0 KB 17 a..
IT/ASIC | FPGA 2024. 4. 5.
[용어 도움말] EMA???
`Power domain EMA 값`을 확인한다는 메시지가 있습니다. 조금 설명을 부가할 수 있을까? > 실제 값과는 다르지만, EMA 분석 예시를 간단하게 설명하자면: "SVT 디바이스의 전력 도메인 A에서 측정된 전류 밀도가 1.5mA/um^2로, 이는 재료의 장기 신뢰성을 위한 안전 기준 1.2mA/um^2를 초과합니다. 이러한 초과는 잠재적인 전자 이동 문제를 지적하며, 설계 최적화가 필요함을 나타냅니다." 이처럼 EMA 값은 전류 밀도를 기준으로 하여 전자 이동에 대한 신뢰성 문제를 예측합니다. 설계 에서 그럼 어떤식으로 개선할 수 잇을까요? 트랙의 폭을 넓히거나, 추가 메탈 레이어를 사용하여 전류 분산을 개선 > 전류 밀도를 초과하는 문제를 개선하기 위한 방법으로는, 트랙의 폭을 넓히거나, 추..
IT/ASIC | FPGA 2024. 2. 22.
FPGA - Nexys A7 보드 터미널 설정 on Windows
Digilent Board를 사용할 때 터미널 설정 법을 Xilinx 페이지에서 가져옴 원본 링크는 여기 => https://digilent.com/reference/programmable-logic/guides/serial-terminals/windows 먼저, 테라텀을 받아서 설치하고 난 뒤에 아래 내용대로 설정하면 된다. Open Tera Term's site (https://ttssh2.osdn.jp/index.html.en) in a new tab. Find the section of the page entitled “Download”. Select the “download page”. Then select the newest version exe installer. 1. New Connecti..
IT/ASIC | FPGA 2024. 2. 22.
Xilinx – PROM mcs 설정 – spi buswidth clock 조정
부팅 후 Done 시그널이 뜨는데 너무 늦게 뜬다. 그럼 bit 만들때 .xdc 파일에 설정을 해 줘야 한다는 것이 핵심 QSPI 를 쓸 수 있게끔, 매뉴얼로 세팅이 필요하다. spi x1 모드에 3MHz 클럭으로 잡혀 있어서 bit 크기에 따라 엄청 느릴수도 있다. Vivado 같은 툴에서 Implementation design 이 뜬 상태에서 Device configuration 이 활성화 되면 그쪽에서 수정할 수도 있고 아래 레퍼런스 처럼 그냥 .xdc 파일에 들어가서 수정을 직접 해줘도 된다. https://aifpga.tistory.com/entry/Vivado-mcs-%ED%8C%8C%EC%9D%BC-%EB%A7%8C%EB%93%A4%EA%B8%B0-Memory-Configuration-Fil..
IT/ASIC | FPGA 2024. 2. 20.
Verilog - Parameter, deparam 사용법
모듈내에 데이터 비트등을 선언할때 정의를 하도록 하려면 Parameter 방법을 이용해야 한다. Hard-fix 코드로 박아두면 항상 문제가 생기곤 했다. 귀찮아도 꼭 미리 해두자 Parameter 선언 인스턴스 생성시에 데이터 비트를 지정하게 하는 방법은 모듈을 만들때 아래처럼 파라메터 값을 받아 처리하도록 하는 것이다. C/C++ 코드의 생성자 함수내의 파라메터를 같은 개념이지 module #() ; 아래 예제는 여기서 가져왔다. https://docs.xilinx.com/r/en-US/ug901-vivado-synthesis/Parameters-Example-Verilog module myreg (clk, clken, d, q); parameter SIZE = 1; input clk, clken; ..
IT/ASIC | FPGA 2024. 2. 20.
Verilog - 숫자 표현 정리 - Signed vector 내용 중요
(작성중입니다) 숫자에 대한 verilog 표현에 대해서 알아본다. 원본 소스 글은 여기이다. 제 공부로 적당히 지워가며 정리된 것이니 꼭 원본 글로 방문해서 제대로 된 글을 읽어보시길 바랍니다. Numbers in Verilog Binary in Verilog By default, a Verilog reg or wire is 1 bit wide. This is a scalar: 기본으로 선언은 1 비트 길이를 표현한다. wire x; // 1 bit wire reg y; // also 1 bit logic z; // me too! A vector is declared like this: type [upper:lower] name; 벡터 값은 아래와 같이 표현된다. wire [5:0] a; // 6-bi..
IT/ASIC | FPGA 2024. 2. 20.
Xilinx Vivado - SPRAM, DPRAM, block RAM 활용
FPGA 는 내부의 램을 필요한 만큼 만들어 쓸수 있는 장점이 있다. 기본적인 1 포트 램을 만들어서 써보자. 일단 데이터시트에서 동작도를 확인할 필요가 있다. Xilinx Parameterized Macros 페이지에 가면 기본적인 RAM에 대한 정보가 있다. https://docs.xilinx.com/r/en-US/ug953-vivado-7series-libraries/XPM_MEMORY_SPRAM XPM_MEMORY_SPRAM - 2023.2 English Specify the reset value of the port A final output register stage in response to rsta input port is assertion. Since this parameter is a ..
IT/ASIC | FPGA 2024. 2. 16.
Verilog - Metastable, CDC (clock domain crossing) 정리
ASIC, FPGA 설계시에 CDC clock domain crossing 내용을 알고 있는지 물어보는 사람이 많은 것 같네요. 제가 알고 있는 방법이 너무 간단해서 이게 꼭 공고에 나올만한 내용인지 모르겠지만 (내가 모르는 무엇인가가 엄청 있는건가요? ^^;;;;) 결론적으로, 클럭이 다른 도메인 사이의 시그널 교환에서는 반드시 무조건 필수적으로 metastable 상태가 전달 되지 않도록 Multi-stage synchronizer 를 사용하면 해결된다는 것!! 참고한 글은 유명한 블로그 님들의 글입니다. https://secondspot.tistory.com/18
IT/ASIC | FPGA 2024. 2. 16.
Verilog - 합성에 유리한 coding 스타일
HDL(Verilog, VHDL, ...) 머든 실제 합성이 설계한 대로 되지 않으면 완전 무용지물이다. 코딩때 부터 신경써야 하는데, 많이 까먹었네. 따로 정리한 문서를 찾아보자. 일단 아래글을 찾아와서, 정리해보자. (지금 정리중...읽고 내 생각 넣고 머 이렇게) 예제나 설명에 대한 자세한 내용은 아래 해당 블로그 님의 글을 방문해서 보심이 맞는것 같습니다. https://trts1004.tistory.com/12108949 일단은 제 개인 공부용으로 복사해서 정리중.... 추가로 자료가 하나더 있다. 엄청 기본적인것인데 5분이면 읽어본다. 함 읽어보자. 1. 블록도를 그려라, 라벨을 붙이고, 시그널 적고, width 명기하자. 2. 타이밍도를 그려라 최대한 자세하게 3. 합성 가능한 코드 템플릿(..
IT/ASIC | FPGA 2024. 2. 16.
Verilog - 곱셈이 합성이 되나요?
verilog에서 * operator를 사용하면 곱셈 전용 조합회로가 합성되는건가요? 이런 질문을 구글링에서 본적이 있다. 아무 생각없이 사용하다가, 타이밍 오류가 없으면 그냥 넘어갔던 것인데, 합성툴이 기본적인것은 컴포넌트가 있는 것 같아, 별로 개의치 않고 설계 했고, 프로토콜 설계에 있어서는 대부분 곱하기 나누기는 사용하지 않았었다. 아무튼 답변도 있어서 일단 저장 https://www.inflearn.com/questions/1065809/14%EC%9E%A5-%EC%A7%88%EB%AC%B8 네, 현업에서도 Verilog 로 곱셈을 기술할때, * 을 사용합니다. Synthesis (합성) 과정을 통해서, targeting 하는 공정 lib 에 있는 * (곱셈 layout) 을 사용하기 때문이고요..
IT/ASIC | FPGA 2024. 2. 15.
Xilinx - Vivado RAM 초기화 값 입력 - coe 파일
Vivado 에서 RAM을 만들때 초기값을 넣어 줄 수 있다. 파일 포맷은 coe 파일인데 Vivado 에서 바로 에디팅 할 수 있다. COE 파일 생성 그냥 그림으로 남겨둔다. 아래처럼 쓰면 된다. radix = 16; pattern = 3 0 3 1 0 1 1 3 0 2 2 2 3 0 1 1 3 0 3; 다른 예제 파일도 아래 링크에서 찾아볼 수 있다. https://docs.xilinx.com/r/2021.2-English/ug896-vivado-ip/COE-File-Examples ****************************************************************** ************* Example of Virtex Bit Correlator.COE ****..
IT/ASIC | FPGA 2024. 2. 15.
Verilog - 파이썬으로 테스트 벤치 작성하기 cocotb - 킵
파이썬으로 테스트벤치를 작성하도록 도와주는 파이썬 프로젝트가 있어 일단 킵 이름은 cocotb 라고 하네 공식 사이트는 여기 https://docs.cocotb.org/en/stable/index.html cocotb cocotb is a COroutine based COsimulation TestBench environment for verifying VHDL and SystemVerilog RTL using Python. 일단 지원되는 시뮬레이터 종류는 다음과 같다. cocotb 기본 골격 A typical cocotb testbench requires no additional HDL code. The DUT is instantiated as the toplevel in the simulator wi..
IT/ASIC | FPGA 2024. 2. 15.
Verilog - RGMII 샘플 코드 - 북마크
Verilog 로 구현된 RGMII 코드가 있어서 일단 공유한다. RGMII 는 이데넷 PHY칩과 MAC 사이의 통신 방법이라고 보면 된다. 일단 아래 블로그글을 참고하자. https://www.circuitden.com/blog/23 CircuitDen | Artin Isagholian This article is for hardcore digital design wizards who don’t want to use any intermediate processors (kiss your software team goodbye) or proprietary IPs to communicate with their FPGAs via an ethernet connection. All you need is a PC,..