반응형

VHDL 31

4-way Traffic controller VHDL

S0에선 북-남쪽이 초록불일 땐, 남북이 통행해야 하므로 동-서 는 빨간불이 되어야 한다 S1에선 북-남쪽이 황색일 때, 동서는 다음 초록신호를 기다려야 하므로 빨간불이 되어야 한다. S2에서 서로 빨간불이 되어 횡단보도(예시)의 신호를 기다린다. S3에선 동서쪽이 통행을 해야하므로 북쪽은 빨간색이 되어야한다. S4에선 이제 다시 남북쪽이 통행하기위한 중간단계로 동서쪽은 황색불이고 남북은 빨간불이 되어야 한다. S5에선 다시 서로 빨간불이 되어 다음 남-북의 통행신호가 되기를 기다린다. 2. 소스코드 및 설명 14: state의 type을 정해준다 (내용은 s0,s1,s2,s3,s4,s5) 16~21 : 각 신호에 관한 시간을 상수처리해주어서 선언한다. 23 : 이전과 다음에 관한 state를 signa..

VHDL 2021.06.09

Coffe Vending Machine 설계(Meerly)

2.소스코드 및 설명(Meerly) Mealy 는 현재상태와 현재입력에 의존한다 . 변수설정과 clk신호에 관한 process문으로 clk신호의 rising_edge일시 rst에 의해 결정되는 present_state값과 rst이 0일 때 present_state에 next_state를 전달하는 상태 기술문이다. 34~42: present_state 에 무슨 입력이 들어오냐에 관한 case문 초기상태 s0에서 coin_in의 1의 입력이 들어오면 next_state에 s1을 전달해주고 그때의 state_out 값은 01, coin_in의 0의 입력이 들어오면 next_state는 s0,state_out 값은 00을 전달해주어 출력한다. 44~51 : coin_in의 1의 입력값에따라 next_state가..

VHDL 2021.06.09

Coffe Vending Machine VHDL (Moore설계)

1.Coffe Vending Machine 2. 소스코드 및 설명 (Moore 설계) 14 : state type을 지정(s0,s1,s2로 이루어짐) 15: state type의 present_state,next_state를 signal로 선언. 19 : clk신호에 관하여 출력지정. rst=1이 1이면 present_state엔 s0을 전달 아닐시 present_state에 next_state를 전달 30 : present_state와 coffee_sel,coffee_serve,coin_in의 입력값에 따라 출력이 정해지는 process문 32: next_state는 s0으로 시작. 34: present_state에 관하여 coin_in의 값에 따라 상태를 기술, 1일시 next_state에 s1을 아..

VHDL 2021.06.09

Sequence Detector(순차검출기)

1011이 입력되면 1이 출력. RESET : S0 초기화 S0 : 초기상태로 1011중 하나도 안들어온 상태 S1 : S0상태에서 1이 들어온 상태 (S0상태에서 0입력시 S0유지) S2 : S0상태에서 10이 들어온 상태 S3 : S0상태에서 101이 들어온 상태 S4 : S0상태에서 1011이 들어온상태 2.소스코드 및 설명 12 : state 타입은 s0,s1,s2,s3,s4로 이루어진 것을 선언 13 : state타입의 present_state,next_state란 signal형 선언 19 : clk pulse가 상승신호일시 20 : rst=1 이면 present_state 는 s0 23 : 아닐 경우 present_state에 next_state를 전달해준다 28 : present_state와..

VHDL 2021.06.09

램메모리 VHDL RAM(Random Access Memory) VHDL

1.RAM(Random Access Memory) Memory에 저장된 값을 읽을 수 있고, ROM과 다른점은 필요한 data를 저장할 수 있다. 하지만 전원이 끊기면 저장된data가 날아간다(=휘발성 메모리) 8비트 데이터를 8개 저장하는 간단한 8비트의 RAM을 설계한다 보았을 때, memclk의 rising_edge 신호에 맞춰 w_en의 신호가 High가 될 때의 address신호값에 data_in을 입력하여 저장시킨다. 2.소스코드 및 설명 7: ADDR_BITS 는 매개변수3으로 정의, DATA_BITS는 매개변수8로 정의 //회로의 개수나 입출력의 크기가 매개변수에 의해 결정되게 하는 generic문 19: subtype형의 ram_word는 DATA_BITS-1=(8-1) 8비트의 로직벡터..

VHDL 2021.06.09

ROM memory (Read Only Memory) VHDL

1. ROM (READ ONLY MEMORY) ROM : 상수 형태로 저장된 data의 address를 변화시키면서 설계자의 사용 요구에 따라 읽을 수 있는 메모리이다. 전원이 끊어져도 정보가 없어지지 않는다. 이를 불휘발성 기억장치라 한다. data의 내용은 변하지 않는 규칙들을 사전에 메모리에 저장해놓고 필요시 data의 address를 제공하면 그 address에 있는 data가 출력된다. read only memory 이기 때문에, clock or wirte-enable 핀또한 필요없고, 별도의 제어신호가 필요하지 않다. ex ) addr0 -> Data0 2.소스코드 및 설명 13: rom_word 는 8비트(7부터0내림차순)의 로직벡터형 subtype 정의 14: rom_table은 (0부터7..

VHDL 2021.06.09

4비트 존슨 카운터(4bit johnson counter)

1. 4비트 존슨 카운터 존슨 카운터(Johnson or twisted-ring counter)는 마지막(맨 오른쪽) 플립플롭의 반전출력(inverted output) Q'가 첫번째(맨 왼쪽) 플립플롭의 입력에 연결된다는 점을 제외하면 링 카운터와 동일한 구조를 갖는다. 2. 소스코드 및 설명 11 : signal형 tmp 4비트 로직벡터를 선언(3부터0까지 내림차순) 13 : CLK,RESET에 관한 process문 (CLK와 RESET값에 의해 출력결정) 15 : RESET 1일시 tmp에 0000을 전달 18~20 : Ring Counter 와 같이 비트를 한비트씩 좌측으로 옮기는 과정이다. 21 : tmp(0)비트에 tmp(3)비트의 반전 값을 넣어준다 0000 > 0001 > 0011 > 011..

VHDL 2021.06.09

4 BIT RING COUNTER,4비트링카운터 VHDL

1. 4 BIT RING COUNTER 링 카운터는 전체적으로 데이터가 회전하는 시프트 레지스터를 말하며, 맨 마지막 플립플롭의 출력이 첫 번째 플립플롭의 입력에 연결되어 있다. 입력된 데이터는 클록의 펄스마다 한 칸씩 이동하게 된다. 2. 소스코드 및 설명 3.시뮬레이션 및 결과설명 (1) 초기값이 “0000”일 때, 0001을 tmp에 전달해주어 이 값을 Y로 전달해 출력하였다. (2) CLK의 신호가 상승신호일 때 왼쪽으로 1비트씩 이동하였기에 0010이 출력되었다. (3) CLK의 신호가 상승신호일 때 왼쪽으로 1비트씩 이동하여 0100이 출력되엇다. (4) CLK의 신호가 상승신호일 때 왼쪽으로 1비트씩 이동하여 1000이 되었다. (5) CLK의 신호가 상승신호일 때 왼쪽으로 1비트씩 이동하여..

VHDL 2021.06.09

모듈로 10 UP-DOWN-COUNTER

1.모듈로 10 UP-DOWN-COUNTER 카운터에서 구별되는 상태 수가 10가지 일 때, 이카운터의 modulus는 10 -> modulo-10(간단히 mod-10; 2진)카운터 라고 함 원하는 값까 S0 지만 카운트 하고 처음부터 다시 카운트 Sn에서 1증가 시 S(n+1) 1감소 시 S(n-1) 이다. S9에서 1증가 시 S0이고, S0에서 1감소 시 S9이다. 10단계의 모듈로 이기 때문에 0000에서 1001까지 (10진수로 0부터 9까지)의 단계로 이루어져 있다. 2. 소스코드 및 설명 3. 시뮬레이션 및 결과 설명 (1) RESET=1일시 초기값은 “0000” (S0의state)가 된다. (2) UP_DOWN신호가 0이고, CLK가 Rising_edge일시 S0에서 1단계가 감소하므로 최대..

VHDL 2021.06.09

5 bit updown counter

1.5 bit updown counter 5bit로 이루어진 2진수 카운터이다 00000에서 1이증가하면 00001 이 되고, 1이 증가시 00010되고 최고값 11111에서 1이 증가시 00000이 된다. 00000에서 1이 감소하면 11111이된다. 2. 업다운 카운터 14 : inout을 위한 로직벡터 선언(4부터 0까지 내림차순) 17 : CLK,RESET의 PROCESS문 -> CLk RESET에 따라 값이 바뀜 20~22RESET값이 1일 시, 00000이 tmp값으로 전달된다. 23 : CLK신호가 rising edge일 시, 입력신호 UP_DOWN이 1일시 tmp의 신호에 tmp+1값을 전달한다, 다른 경우 tmp 에 tmp-1값을 전달한다. 32 : Y의 tmp에 값을 전달함( Y는 출력..

VHDL 2021.06.09
반응형