상세 컨텐츠

본문 제목

verilog - reg16(bit_clear내용)

설계공부/Verilog

by 썽심 2024. 5. 11. 23:04

본문

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에 사용할 reg16를 만들기 위한 연습과정

 

 

reg16

 

여기서 가장 핵심 부분은 bit저장하는 부분도 중요하지만 bit가 clear되는 부분도 중요하다.

 

 

reg16.v

clk을 사용하기 때문에 always를 사용했음

clk이 상승엣지일 때 모든 변수가 동작되도록 설계,

 

clk_ena가 1일때, sclr_n이 0이면 > reg_out은 clear 즉 0이 되도록 설계,

sclr_n이 1이면 output,  reg_ou은 input data인 datain값을 받도록 설계했다.

datain[15:0]이 아닌 datain만 사용해도 동일하게 출력 됨

 

tb_ reg16.v

clk이 지속적으로 동작되도록 initial begin-end 구문을 통해

초기값 설정 후, forever begin-end를 통해 #20ns 마다 0,1 반복되도록 설계

 

그 밖의 input 변수 값 설정 후

변수들을 관찰하기 위해 #40마다 data 값을 변경했다.

 

do.file

0,1 반복인 clk은 binary,

16진수 값을 제대로 확인하기위해

datain, output값을 hex로 설정

 

 

 

Simulation

시뮬레이션 결과 waveform이다.

 

initial begn-end로 넣어준 입력값들이 설계된 code에 알맞게 동작됨을 확인했다.

 

40ns에서 clk_ena들어옴 > clk이 1이됐을 때 비교 > 비교 후 60ns에서 clear되는것을 확인

 

#40 이후 sclr_n값 1입력받음 > clk이1이될 때 까지 대기하다 비교 > 100ns에서 clk, sclr_n이 1이기 때문에 datain 값을 받음 output data 1f1f로 입력됐음

 

#40 이후 120ns에서 clk_ena data가 0, datain이 1234로 입력 > (clk_ena가 0이기 때문에 출력값 변동 x)

 

#40 이후 160ns에서 clk_ena data 1로 입력 > clk1이 될때 출력값인 reg_out에 변경된datain 값인 1234이 출력되는 것을 확인

 

#40 이후 200ns에서 sclr_n data를 0으로 입력함 > 설계된 if문에 따라 비교하여 출력값 clear됨.

 

 

728x90

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

verilog - mult_control(Mealy와 Moore 결합 방식의 FSM)  (1) 2024.05.15
verilog - counter(!중요 asynchronous clear)  (0) 2024.05.12
verilog - 7segment  (0) 2024.05.07
verilog - shifter(중요!)  (0) 2024.05.06
verilog-mux4  (0) 2024.05.06

관련글 더보기