2023. 6. 1. 10:35ㆍ[Harman] 세미콘(semiconductor) 아카데미-반도체설계/Verilog를 이용한 RTL 시스템 반도체 설계
- vivado 1
vivado를 활용하여 xilinx board(BASYS3)활용할 예정
vivado = 디지털 회로를 하드웨어 기술 언어를 통해 설계하고 구현하는 소프트웨어
VHDL을 이용해서 디지털 회로를 설계하는 경우, 먼저 VHDL코드 작성 후 컴파일 -> 시뮬레이션으로 동작검증 -> 물리적으로 구현하는 단계로 구성
기본 설계 절차
- VIVADO WebPack 프로그램을 실행해서 프로젝트 생성
- VHDL 회로도/블록 다이어그램을 이용해 설계 후 컴파일
- 컴파일 과정에 의해 VHDL코드를 디지털회로로 합성
- 디바이스(FPGA)에서 동작할 수 있는 배치 및 배선 수행
- 특징) 타이밍 분석을 통해 실제로 회로를 동작 시키지 않고도 시뮬레이션으로 디바이스에서 실행했을 때의 신호의 시간 지연을 계산함으러써 그 결과물 확인
베릴로그 -> 시스템 베릴로그 -> HLS
HLS = C언어로 작성한 소스코드를 HDL로 변환해주는 컴파일러
vitis = FPGA의 PL영역에서 고급어와 보드간의 연결을 위한 컴파일러
vivado = 베릴로그 코드를 로직으로 변환시켜주는 프로그램
- vivado 2
디지털 논리회로 구성요소
- 조합회로 = 입력이 변화되었을 때 처리회로를 거쳐 출력(전달지연시간 발생)으로 나타나는데, 이때 입력변화의 결과가 반드시 출력신호로 나타나는 회로
- 순차회로 = 레지스터가 존재 / clock이 발생하는 순간 입력의 상태에 따른 처리결과가 출력되는 회로로, 클럭이 발생하지 않은 위치에서는 입력의 변화가 출력에 영향을 미치지 못하는 회로
- 메모리= RAM, ROM, PROM, EPROM, EEPROM, Flash & HDD
- AND게이트 시뮬레이션
module and_gate(
input x,
input y,
output z
);
assign z = x & y;
endmodule
코드 입력 후
선택 시
해당 Objects 창이 생성된다
해당 창에서 시뮬레이션에 사용될 x, y 의 값을 hex, oct, bin, bcd로 설정하여 입력가능
시뮬레이션을 통해 AND게이트가 정상 작동하는 것을 확인할 수 있다.
- AND게이트 Schematic
- RTL ANALYSIS Schematic = 우리가 작성한 코드를 통해 생성된 게이트의 회로도
- SYNTHESIS Schematic = RTL ANALYSIS Schematic을 look up table라는 블록에서 나타냈을 때의 블록도
쓰던 프로젝트에 Add Source를 할 때는 set as top을 선택하여 추가한 소스를 위로 배정해야 한다.
기계자체의 클럭 = 내부클럭
- SW작동 시 LED 점등
//Basys_3_Master.xdc
## This file is a general .xdc for the Basys3 rev B board
## To use it in a project:
## - uncomment the lines corresponding to used pins
## - rename the used ports (in each line, after get_ports) according to the top level signal names in the project
## Clock signal
set_property -dict { PACKAGE_PIN W5 IOSTANDARD LVCMOS33 } [get_ports clk] //clk
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] //clk
## Switches
#set_property -dict { PACKAGE_PIN V17 IOSTANDARD LVCMOS33 } [get_ports {sw[0]}]
#set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports {sw[1]}]
#set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports {sw[2]}]
#set_property -dict { PACKAGE_PIN W17 IOSTANDARD LVCMOS33 } [get_ports {sw[3]}]
#set_property -dict { PACKAGE_PIN W15 IOSTANDARD LVCMOS33 } [get_ports {sw[4]}]
#set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports {sw[5]}]
#set_property -dict { PACKAGE_PIN W14 IOSTANDARD LVCMOS33 } [get_ports {sw[6]}]
#set_property -dict { PACKAGE_PIN W13 IOSTANDARD LVCMOS33 } [get_ports {sw[7]}]
#set_property -dict { PACKAGE_PIN V2 IOSTANDARD LVCMOS33 } [get_ports {sw[8]}]
#set_property -dict { PACKAGE_PIN T3 IOSTANDARD LVCMOS33 } [get_ports {sw[9]}]
#set_property -dict { PACKAGE_PIN T2 IOSTANDARD LVCMOS33 } [get_ports {sw[10]}]
#set_property -dict { PACKAGE_PIN R3 IOSTANDARD LVCMOS33 } [get_ports {sw[11]}]
#set_property -dict { PACKAGE_PIN W2 IOSTANDARD LVCMOS33 } [get_ports {sw[12]}]
#set_property -dict { PACKAGE_PIN U1 IOSTANDARD LVCMOS33 } [get_ports {sw[13]}]
#set_property -dict { PACKAGE_PIN T1 IOSTANDARD LVCMOS33 } [get_ports {sw[14]}]
#set_property -dict { PACKAGE_PIN R2 IOSTANDARD LVCMOS33 } [get_ports {sw[15]}]
## LEDs
set_property -dict { PACKAGE_PIN U16 IOSTANDARD LVCMOS33 } [get_ports {led}] // 1번 SW ON
//실행 파일
module add(
input clk,
output led
);
reg[24:0] count = 0;
always @ (posedge(clk)) count <= count +1;
assign led = count[24];
endmodule
'[Harman] 세미콘(semiconductor) 아카데미-반도체설계 > Verilog를 이용한 RTL 시스템 반도체 설계' 카테고리의 다른 글
FND&디코더 (0) | 2023.06.15 |
---|---|
7-세그먼트 디코더, 크기 비교기 (0) | 2023.06.09 |
설계, 가산기, 디코더, 인코더, 스위칭 인코더 (0) | 2023.06.08 |
7 Segment Decoder, D - Flip Flop, Register (0) | 2023.06.07 |
조합회로, 순차회로, Multiplexer (0) | 2023.06.02 |