분류 전체보기 (24) 썸네일형 리스트형 32비트 부동소수점 곱셈 구현 부동소수점(32bit) 곱셈을 베릴로그로 구현해봤다. 부동소수점에 대한 이해를 마친 사람들을 위한 포스트다. 부동소수점의 설명 아래의 링크로 대체한다. 한글 버전도 있다. https://en.wikipedia.org/wiki/Floating-point_arithmetic Floating-point arithmetic - Wikipedia From Wikipedia, the free encyclopedia Computer approximation for real numbers An early electromechanical programmable computer, the Z3, included floating-point arithmetic (replica on display at Deutsches Muse.. generate와 반복문 이번 포스트는 generate와 반복문을 다룬다. Verilog를 쓰다보면 1000개쯤 되는 reg 변수들을 초기화한다고 하는 반복적인 상황에 처할 때가 있다. 전체 코드에서 대부분을 재활용하고 나머지 부분을 용도에 따라 다르게 사용해야 하는 경우도 있다. 전자의 상황에서는 반복문을 쓰는게 쓰기도 편하고 가독성도 좋다. 후자에서는 generate를 사용하면 편하게 사용이 가능하다. 반복문의 경우 흔히 C에서 사용하는 for, while 등과 생소한 forever, repeat가 Verilog에서 사용된다. 4개 가운데 for문이 자주 사용되는데, 오늘은 이 for문을 주로 살펴볼 것이다. 합성 가능한 for문은 아래와 같은 경우에 사용한다. 1. 반복적인 병렬 assignment 구문 2. 반복적인 병렬.. Tree Multiplier(16bit Dadda Multiplier) 이번 포스팅은 Tree Multiplier(곱셈기)에 대해 다뤄볼 것이다. 내가 처음 설계해본 것은 Carry Save Adder를 이용한 곱셈기였다. 이런 구조의 곱셈기를 8비트로 만들었다. 8비트로 저런 곱셈기를 만들면 critical path가 2*HA(Half Adder) + 13*FA(Full Adder)가 된다. 16비트가 되면 당연히 이보다 더 긴 시간이 걸릴 것이다. Tree Multiplier는 위에서 설명한 곱셈기보다 더 짧은 시간 안에 곱셈을 수행한다. 8비트를 예로 들면 8x8 부분곱이 이루는 Stage의 갯수를 감소시켜 연산을 고속화한다. 왼쪽 그림은 Wallace Tree로, 3개 혹은 2개의 부분곱 그룹을 Full Adder 혹은 Half Adder로 연산하여 Stage를 줄인.. 4bit/16bit Carry Lookahead Adder 설계 컴퓨터의 가산기(Adder)는 여러 종류가 있다. 기초적인 Ripple Carry Adder라던가, Carry Select Adder 등등... Ripple Carry Adder는 예전에 다룬 적이 있었다. https://verilog-hdl-design.tistory.com/entry/Adder-And-Subtractor 덧셈과 뺄셈, 그리고 sign extension 베릴로그로 4비트 덧셈과 뺄셈을 구현해봤다. 그러기 위해서는 1비트 단위의 덧셈부터 구현해야 하는데, 이는 위키피디아에 잘 정리되어 있다. https://en.wikipedia.org/wiki/Adder_(electronics) Adder (electroni verilog-hdl-design.tistory.com 이번에 다룰 가산기는 C.. Icarus Verilog 사용법 및 유용한 팁 Verilog 시뮬레이션 툴들은 다양하다. Altera 사의 modelsim, Xilinx 사의 vivado, Cadence 사의 Xcelium(ncverilog), Synopsys 사의 vcs가 대표적이다. 학부생들이 주로 사용하는 툴은 modelsim과 vivado이다. FPGA를 사용하기 위해 쓰는 경우가 많다. modelsim은 Altera 사의 Quartus라는 툴에 대응되는 FPGA 보드를 사용하기 위해 사용된다. vivado는 Xilinx 사에서 지원하는 FPGA 보드를 사용하기 위해 사용된다. Icarus Verilog는 라이센스 걱정없이 자유롭게 Verilog 시뮬레이션을 수행할 수 있으며, 터미널 환경에서의 컴파일 환경을 경험하기에 좋은 툴이다. 특히 Include를 직접 사용하기에 정.. Single Cycle RISC-V 32I 프로세서 설계 이번에는 RISC-V 프로세서 중 가장 단순하고 느려터진 Single cycle cpu를 설계했다. https://github.com/pyong-1459/RISC-V_32I GitHub - pyong-1459/RISC-V_32I Contribute to pyong-1459/RISC-V_32I development by creating an account on GitHub. github.com 베릴로그 코드는 깃허브에 올려뒀다. 1. RISC란? Reduced instruction set computer 의 줄임말이다. RISC-V는 RISC의 5번째 버전을 의미하며, RISC의 최신 ISA(Instruction Set Architecture)이다. https://en.wikipedia.org/wiki/R.. Deinterleaver 심화 - mod 1536 https://github.com/pyong-1459/Deinterleaver-2022-mod1536 GitHub - pyong-1459/Deinterleaver-2022-mod1536 Contribute to pyong-1459/Deinterleaver-2022-mod1536 development by creating an account on GitHub. github.com 이번에도 K대 프로젝트로, 예전에 설명한 deinterleaver에서 mod 변수가 2의 승수가 아닌 경우를 구현했다. 이번 벡터 파일은 0~1535 까지의 A~H 총 8개 데이터를 interleave한 결과다. rule은 아래와 같다. A: Out(8w+0) = A((w + 0) mod 1536) B: Out(8w+1) = B(.. Discrete Cosine Transform 구현 오늘은 K대학교 4학년 과정에 있는 프로젝트를 처음부터 구현해봤다. DCT라고 불리는 녀석인데, JPEG 이미지 압축과정 중에 하나이다. https://bskyvision.com/485 JPEG 압축 제대로 이해하기 아래 사진은 2019년 1월 5일, 14일에 찍은 사진들을 담은 폴더를 캡쳐한 것이다. 여기 보면 유형에 JPG 파일이라고 적혀있는 것을 확인할 수 있다. JPEG 이미지 파일 형식으로 이미지가 저장 및 표현 bskyvision.com 위의 링크는 JPEG 압축 과정을 다루고 있다. 해당 포스트에서 알 수 있듯이, DCT는 손실 압축 전에 전처리하는 과정이다. 저주파 성분은 보존하고 고주파 성분은 일부만 보존하여 데이터 압축률을 높인다. https://github.com/pyong-1459/.. 이전 1 2 3 다음