상세 컨텐츠

본문 제목

verilog - counter(!중요 asynchronous clear)

설계공부/Verilog

by 썽심 2024. 5. 12. 01:51

본문

728x90

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씩 증가됨을 확인했다.

728x90

'설계공부 > Verilog' 카테고리의 다른 글

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

관련글 더보기