본문 바로가기

Digital Logic/Verilog11

[Verilog] Fixed point Scaler 연산 (Sign 연산 - right shift) verilog에서 shift는 4가지 형태로 존재한다. >>, >, 2; //c == 5'b11101, 'cause sign bit was `1` d = a >> 3을 했는데 sign bit으로 채워지지 않는 걸 발견했다. 보아 하니 a가 signed으로 casting 되어 있어야 했다. reg signed [9:0] b = 10'sb11_0101_0101; reg signed [9:0] a_signed; reg [9:0] a_unsigned; always_comb begin a_signed = b >>> 2; a_unsigned = b >> 2; end #a_signed 1111010101 #a_unsigned 0011010101 혹은 연산할 때 casting 방식으로 wire [PSUM_WL+SCAL.. 2023. 9. 9.
[Verilog] Fixed point Scaler 연산 (Quantization - 비트 수가 다른 파라미터와 연산) Pytorch에서 quantization을 구현 코드를 verilog로 변환하기 위해서는 fixed point scaler 연산이 필요하다. 연산에 있어서 필요한 여러 개념들이 있는데 아래 블로그 글을 참고하면 좋다. 2023.09.05 - [Digital Logic/Verilog] - [Verilog] Fixed point Scaler 연산 (Quantization - binary 연산) 2023.09.06 - [Digital Logic/Verilog] - [Verilog] Fixed point Scaler 연산 (Quantization - sign 곱셈/덧셈 연산) [Verilog] Fixed point Scaler 연산 (Quantization - binary 연산) Fixed point 란? ve.. 2023. 9. 6.
[Verilog] Fixed point Scaler 연산 (Quantization - sign 곱셈/덧셈 연산) Fixed point Scaler 연산의 기초는 아래 블로그 글을 참고하면 좋다. 2023.09.05 - [Digital Logic/Verilog] - [Verilog] Fixed point Scaler 연산 (Quantization - binary 연산) [Verilog] Fixed point Scaler 연산 (Quantization - binary 연산) Fixed point 란? verilog로 프로그래밍 하기 위해서는 값의 형태가 fixed point로 구성되어야 한다. 위의 그림처럼 sign / Integer / Fraction 으로 되어 있다. 특히 quantization의 경우, Integer와 scaler로 나눠서 연산 rubber-tree.tistory.com Scaling 연산 Res.. 2023. 9. 6.
[Verilog] Fixed point Scaler 연산 (Quantization - binary 연산) Fixed point 란? verilog로 프로그래밍 하기 위해서는 값의 형태가 fixed point로 구성되어야 한다. 위의 그림처럼 sign / Integer / Fraction 으로 되어 있다. 특히 quantization의 경우, Integer와 scaler로 나눠서 연산하며 scaler의 integer와 fraction이 각각 몇 bit인지를 알고 있어야 된다. Fixed point Scaler 연산 아래와 같이 quantization하는 pytorch 코드가 있다. // rescaling rescale = self.a_max / self.a_max_origin inp = inp * rescale // rounding inp = torch.round(inp) inp = inp * (1. / se.. 2023. 9. 5.
Verilog 설계에서 중요한 존재들 - Counter (카운터) Counter (카운터) Counter는 아래 2가지 기능을 갖추고 있다. 1. 과거의 값을 저장하는 Register 2. 과거의 값을 변화시키는 증가/감소 값 Register를 구성하는 개념은 순차 논리 회로인 Flip-Flop에서 시작되며 아래 포스팅을 참고하면 더 이해하기 쉽다. 지난 시간 동안 익혀왔던 개념들이 소자라면 이젠 그 소자들을 이용하여 카운터라는 모듈을 만드는 것이라 생각하면 좋다. 2021.05.09 - [Digital Logic/Verilog] - Verilog 설계에서 중요한 존재들 - 순차 논리 회로(Sequential logic circuits)_#Flip-Flop Verilog 설계에서 중요한 존재들 - 순차 논리 회로(Sequential logic circuits)_#Fli.. 2021. 5. 10.
Verilog 설계에서 중요한 존재들 - 순차 논리 회로(Sequential logic circuits)_#Flip-Flop 순차 논리 회로(Sequential logic circuits) 현재의 입력과 기억 소자에 기록된 과거 출력들과의 조합에 의해 현재의 출력 값이 결정된다. 이 논리 회로에는 조합 논리 회로와 달리 '시간 개념'이 도입 된다. 조합 논리 회로에 대해 잘 모른다면 아래 글을 참고하면 좋다. 2021.05.08 - [Digital Logic/Verilog] - Verilog 설계에서 중요한 존재들 - 조합 논리 회로(Combinational logic circuits) 순차 논리 회로는 역할은 동일하되 특징에 따라 종류가 나눠진다. 그러므로 먼저 역할에 대해 알아보고 특징에 따른 종류를 구분해보도록 하겠다. 1. 역할 정보를 저장하는 기억 소자이며 때로는 데이터 정보를 전송하는 회로에도 사용된다. 2. 동작에.. 2021. 5. 9.
Verilog 설계에서 중요한 존재들 - 조합 논리 회로(Combinational logic circuits) 조합 논리 회로(Combinational logic circuits) 출력이 단지 현재의 입력 값에 의해서만 결정된다. 이 말의 내포는 과거의 입력 값에도 결정되는 회로가 따로 있다는 것을 알 수 있다. 이 부분은 다음 포스팅에서 다루도록 하겠다. 어찌보면 단순.조합. 논리 회로이다. 종류는 크게 5가지로 나누었다. Adder, Comparator, Decoder, Encoder, MUX&DEMUX 그럼 순서대로 하나씩 알아보도록 하자. 1. 가산기 (Adder) - 목적: 입력 인자를 더해서 출력한다. - 주의점: 덧셈 결과 M bit 안에 표현하지 못하면 'Overflow bit'가 발생한다. 그래서 이를 방지하기 위한 설계를 고려해야 한다. 그걸 Full Adder라고 하며 Carry-in이라는 올.. 2021. 5. 8.