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%로 나옴
보드 동작 결과
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 |