컴퓨터 지식 네트워크 - 컴퓨터 구성 - Vhdl 신호등 디자인

Vhdl 신호등 디자인

1 실험 목적

1. 신호등의 밝은 소멸 법칙을 이해하다.

2. 신호등 컨트롤러의 작동 방식을 이해합니다.

3. VHDL 언어 프로그래밍에 익숙하고 실제 설계의 최적화 시나리오를 이해합니다.

2 하드웨어 요구 사항

1. EDA/SOPC 실험 상자 1 대. < P > 3 실험 원리 < P > 신호등은 사거리, T 자형 등 여러 가지 방법으로 표시되며, 같은 길목에는 여러 가지 다른 표시 요구 사항이 있습니다 < P > 이 실험을 완료하려면 먼저 교통가로등의 밝은 소멸 법칙을 이해해야 한다. 본 실험은 실험상자의 신호등 모듈에 있는 발광 다이오드, 즉 빨강, 노랑, 녹색을 각각 세 개씩 사용해야 한다. 사람들의 교통 관례에 따르면, "빨간불 정지, 청신호 행, 노란등 알림" 입니다. 그 신호등의 환멸법칙은 초태가 두 길목의 빨간불이 모두 켜지고, 그 후 동서길목의 청등이 켜지고, 남북길목의 빨간불이 켜지고, 동서방향이 개통되고, 일정 기간 지연되면 동서길목의 청등이 꺼지고, 황등이 깜박이기 시작한다는 것이다. 몇 번 깜박인 후 동서길목에서 빨간불이 켜지고, 동시에 남북길목의 청신호가 켜지고, 남북방향이 개통되기 시작하며, 일정 기간 연기한 후 남북길목의 청등이 꺼지고, 황등이 깜박이기 시작했다. 여러 번 깜박인 후 동서 교차로 방향으로 전환하여 이 과정을 반복합니다. < P > 실험에서 8 개의 7 세그먼트 코드 튜브 중 2 개의 디지털 파이프를 사용하여 시간을 표시합니다. 동서로와 남북로의 개통 시간은 모두 2s 로 설정되어 있다. 디지털 튜브의 시간은 항상 19, 18, 17 ... 2, 1, , 19, 18 ... 표시 시간이 3 초 미만일 때, 개통 방향의 노란등이 깜박거린다. < P > 4 가지 실험 내용 < P > 이 실험은 실험상자의 신호등 모듈과 7 단 코드관 중 2 개로 표시되는 간단한 신호등 컨트롤러를 설계하는 것입니다. 시스템 클럭클럭 모듈의 1KHz 클럭을 선택합니다. 황등 깜박임 클럭 요구 사항은 2Hz 이고, 7 단 코드관의 시간은 1Hz 펄스로 표시됩니다. 즉, 1s 당 한 번씩 감소하며, 표시 시간이 3 초 미만일 때, 개통 방향의 노란등이 2Hz 주파수로 깜박입니다. 시스템에서 S1 키를 사용하여 리셋합니다.

5 실험 단계

신호등 컨트롤러 완료 실험 단계는 다음과 같습니다.

1. 먼저 Quartus II 소프트웨어를 열고 새 프로젝트를 만든 다음 새 VHDL 파일을 만듭니다.

2. 자신의 생각대로 VHDL 프로그램을 작성합니다.

3. 자신이 작성한 VHDL 프로그램을 컴파일하고 시뮬레이션합니다. < P > 4. 시뮬레이션이 정확하면 부록 1 의 핀 도표에 따라 실험에서 시계, 7 단 코드 표시 및 신호등 모듈을 사용하는 LED 에 해당하는 FPGA 핀을 핀 바인딩한 다음 다시 컴파일합니다.

5. 다운로드 케이블을 사용하여 JTAG 인터페이스를 통해 해당 sof 파일을 FPGA 로 다운로드합니다.

6. 신호등 컨트롤러의 작업이 실험 요구 사항을 충족하는지 확인합니다.

참고: 이 실험에는 핀 재사용

-------------------------------------------------

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std _ logic _ unsigned.all;

----------------- -시계 입력

Rst: in std_logic; -입력 재설정

R1,R2: out std_logic; -빨간불 출력

Y1,Y2: out std_logic; -노란등 출력

G1,G2: out std_logic; -청신호 출력

디스플레이: out STD _ logic _ vector (7 down to ); -7 세그먼트 코드 튜브 디스플레이 출력

seg _ sel: buffer STD _ logic _ vector (2 down to )--7 세그먼트 코드 튜브 스캔 드라이브

;

end exp18;

-----------------

signal disp _ decode: STD _ logic _ vector (7 down to );

signal se C1, sec 1: integer range to 9;

signal direction: integer range to 15;

signalclk _ count1: STD _ logic _ vector (9 down to ); --.5Hz 시계를 생성하는 주파수 분할 카운터

signal Clk1Hz: std_logic;

signal Dir_Flag: std_logic; -방향 플래그

begin

process (clk)

begin

if (clk' event and clk =' 1') thees 1) then

Clk_Count1< =Clk_Count1+1;

else

Clk_Count1< ="1 ";

end if;

end if;

end process;

Clk1Hz< =Clk_Count1(9);

프로세스 (clk1hz, rst)

begin

if (rst =' ') then

sec1 < =;

SEC1< =2;

Dir_Flag< ='';

elsif (clk 1hz' event and clk 1hz =' 1') then

if (se C1 = ) then

se C1< =9;

if(SEC1=) then

SEC1< =1;

else

SEC1< =SEC1-1;

end if;

else

SEC1< =SEC1-1;

end if;

if (sec1 = 및 sec1 = ) then

dir _ flag < =not Dir_Flag;

end if;

end if;

end process;

프로세스 (clk1hz, rst)

begin

if (rst =' ') then

R1 < ='1';

G1< ='';

R2< ='1';

G2< ='';

else-정상 작동

if(SEC1> 또는 sec1 > 3) then

if (dir _ flag =' ') then-횡단 통과

R1< ='';

G1< ='1';

R2< ='1';

G2< ='';

else

R1< ='1';

G1< ='';

R2< ='';

G2< ='1';

end if;

else

if (dir _ flag =' ') then-횡단 통과

R1< ='';

G1< ='';

R2< ='1';

G2< ='';

else

R1< ='1';

G1< ='';

R2< ='';

G2< ='';

end if;

end if;

end if;

end process;

프로세스 (clk 1hz)

begin

if (sec 1 > 또는 sec1 > 3) then

Y1< ='';

Y2< ='';

elsif (dir _ flag =' ') then

y1 < =Clk1Hz;

Y2< ='';

else

Y1< ='';

Y2< =Clk1Hz;

end if;

end process;

프로세스 (dir _ flag)

begin

if (dir _ flag =' ') then-가로

d =1;

else-세로

Direction< =11;

end if;

end process;

프로세스 (seg _ sel)

begin

case (seg _ sel+1) is

when "" = Disp_Temp< =Direction;

when "1"=> Disp_Temp< =Direction;

when "1"=> Disp_Te

上篇: TCP와 UDP 헤더 비교 下篇: Winxp 순수 버전 iso 이미지 다운로드 주소 목록
관련 내용