상세 컨텐츠

본문 제목

verilog - 7segment

설계공부/Verilog

by 썽심 2024. 5. 7. 01:32

본문

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

 

 

7segment_block_diagram

 

7segment에는

Common-Anode Type / Common-Cathode Type 이 있다.

보드 검증결과 내 fnd는 anode type으로 data가 0일때 led가 on된다

따라서 기존code의 반대로 입력값을 넣어 주었다.

 

Anode Type

LED 의 입력단자에 0V 를 연결하면 LED 가 on 점등되고, +5V 를 연결하면 불이 off 꺼진다.

Cathode Type

LED 의 입력단자에 +5V 를 연결하면 LED 가 on 점등되고, 0V 를 연결하면 불이 off 꺼진다.

 

Code

7_segment.v

 

Cathode type으로 했다가 보드검증 이후 Anode type 확인 후 입력 data 변경 완료

case 문을 사용하여 inp 일때의 다량의 경우들을 입력했다.

 

tb_7_segment.v

`timescale을 사용하여 simulation 시간이 설정되도록 했고,

initial begin - end 구문을 사용하여 조건 매개체인 inp값의 초기값을 3 binary 값 000이 되도록 설정,

이후 forever 값을 사용하여 20ns마다 +1씩 증가 되도록 설계했다.

 

 

+++ 

>> 이후 simulation에서

만약 seg_a, b, c = on 일때 출력 문구 'D' 라는 것을 보고싶을 때

어떻게 testbench를 만들지 고민해봐야함.

 

 

simulation_waveform

0~7까지 설정한 뒤, 결과이다.

Cathode type이기 때문에 data가 Anode type과 반대인 waveform을 검증했다. 

 


pin_map 설정

 

 

보드에 동작 코드 올리는 방법

quartus 화면에서 pinmap 설정 이후 start button을 눌러 합성(Synthesis) 진행

 

이후 Programmer button을 눌러 H/W에 CODE 업로드 준비를 한다.

 

기본화면이다.

 

 

hardware setup - DE1_SoC로 선택

 

기본화면 - Auto Detect - 5CSEMA5(Cyclon5) 보드에 알맞게 설정

 

기본화면 - add file - sof file 등록

 

그 다음 start버튼을 눌러 업로드 진행

완료되면 progress가 100%로 나옴

 


보드 동작 결과

 

728x90

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

verilog - counter(!중요 asynchronous clear)  (0) 2024.05.12
verilog - reg16(bit_clear내용)  (0) 2024.05.11
verilog - shifter(중요!)  (0) 2024.05.06
verilog-mux4  (0) 2024.05.06
verilog-mult4x4  (0) 2024.05.06

관련글 더보기