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에 사용할 2bit counter를 만들기 위한 연습과정
counter
counter.v
****중요***
asynchronous clear되도록 aclr_n를 사용했다.
하드웨어 디자인에서 종종 발생하는 문제를 해결하기 위해 사용된다.
clk과는 독립적으로 발생하게 되고, 이전 상태와는 무관하게 즉시 동작해야 한다.
이 경우 always 블록을 사용하여 클럭 신호와 독립적으로 aclr_n이 하강할 때마다 카운터를 초기화 한다.
오류 발생
if (aclr_n) count_out <= 2'b00; 일 경우 발생된다.
- aclr_n이 negedge 일 때, aclr_n==1을 절대 인지하지 못하기 때문에 오류 발생
또한 2'b01 << 이것도 오류가 발생한다.
따라서 그냥 2'b1로 code를 작성해야함.
수정 후
tb_counter
clk이 지속적으로 발생되도록 초기값과 forever begin - end 구문을 사용하여
#20마다 0,1이 되도록 반복 설계
추가적으로 initial begin - end 구문을 사용하여,
aclr_n의 초기값을 0으로 준 뒤,
#40 이후 1로 data를 변경하여 output출력이 어떻게 변경되는지 볼 수 있도록 설계했다.
do.file
simulation
waveform이다.
#40일때 aclr_n data를 1로 변경하고 clk이 1이 됐을 때,
output값이 01로 변경 이후 clk이 1이 될 때 마다 2'b1씩 증가됨을 확인했다.
verilog - mult_control(Mealy와 Moore 결합 방식의 FSM) (1) | 2024.05.15 |
---|---|
verilog - reg16(bit_clear내용) (0) | 2024.05.11 |
verilog - 7segment (0) | 2024.05.07 |
verilog - shifter(중요!) (0) | 2024.05.06 |
verilog-mux4 (0) | 2024.05.06 |