HDL: Verilog(2001)
Synthesis: Intel(Altera)_Quartus prime 18.1
Simulation: Intel(Altera)_ModelSim 10.5b
Board: Intel(Altera)_DE1_SoC (FPGA와 HPS가 결합된 SoC)
FPGA(device): Intel(Altera)_Cyclone V(5CSEMA5F31c6)
HPS(Hard Processor System): ARM_Coretex-A9
8x8mult을 만들기 위한 module 구현 중.
uart / mult 8*8에 사용할 mux4를 만들기 위한 연습과정
mux4
Code
Mux4.v
input, output 값을 넣어줌, output값은 값을 저장해야 하기 때문에 reg를 선언해 입력 값이 저장되도록 설계,
always를 사용 하여 순차적으로 조건이 실행 되도록 했고,
mux_sel이 0이라면 mux_out은 mux_in_a값이 나오도록
그게 아니라면, mux_out은 mux_in_b값이 나오도록 설계했다.
여기서 always 사용 한 뒤 begin- end는 생략가능하다.
조건이 하나이기 때문에
//mux_sel은 0,1만 사용하기 때문에 bit 선언 안해도 됐다.. 실수,,
tb_mux4.v
`timescale을 사용하여 시뮬레이션 시간설정이 되도록 했다.
initial begin-end 구문으로 mux_in_a, mux_in_b 초기 입력값을 9 / 7 로 설정.
mux_sel 값도 초기 값을 1로 설정.
forever begin - end 구문으로 sel 값이 20ns 마다 0 과 1 이 반복 되도록 설계 해주었다.
******! 중요 ! ******
Toggle 구문!
forever begin - end 구문에서
toggle을 사용하는 방법이 있는데
mux_sel = (mux_sel ? 1'b0 : 1'b1);
이렇게 사용하는 방법이 있다.
비교대상인 mux_sel이 참이라면 1'b0값 /
거짓이라면 1'b1값이 나오도록 설계도 가능하다.
simulation waveform
sel 값에 따라 output 값이
input값 mux_in_a 값 / mux_in_b 값으로 계속 변동되는 것을 검증했다.
verilog - 7segment (0) | 2024.05.07 |
---|---|
verilog - shifter(중요!) (0) | 2024.05.06 |
verilog-mult4x4 (0) | 2024.05.06 |
verliog-adder (0) | 2024.05.06 |
clock gating (0) | 2024.04.10 |