베릴로그 자판기(FPGA) / Vending Machine
본 자료는 7페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
해당 자료는 7페이지 까지만 미리보기를 제공합니다.
7페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

베릴로그 자판기(FPGA) / Vending Machine에 대한 보고서 자료입니다.

목차

1. ASM 차트 작성
2. 동작설명
3. 핀 할당 설명
4. 동작사진

본문내용

5'b00000;//리셋 led 모두 off
else if(sum_coin > 9'd39) tea_led <= 5'b11111; //돈이 390원 이상, led 모두 On
else if(sum_coin > 9'd34) tea_led <= 5'b11101; //돈이 340원 이상, 350,400원 차 On
else if(sum_coin > 9'd24) tea_led <= 5'b01001; //돈이 240원 이상, 250원 차 led ON
else tea_led <= 5'b0; // 위에 해당하지 않으면 0이 되어 돈이 감산 될 때도
endmodule // 클락에 따라 변하여 led가 변할 수 있게 함
// 각각의 버튼 선택 시 차 선택 및 진행 LED 5초 표시 모듈
module tea_select(button,tea, clk, rst, ing);
input clk, rst;
input [4:0] button;//차 5종류 선택 위한 스위치 5개
output [4:0] tea;//차 5종류
output ing;//차 선택 시 진행 LED
reg ing;
wire tc1, tc2, tc3, tc4, tc5;//카운터 연결을 위한 tc
wire [3:0] q1, q2, q3, q4;
wire [2:0] q5;
assign tea = button;//tea 종류 하나당 버튼 하나씩 연결
assign d = |tea;//tea 누를때마다 d 1
wire ce;
reg ce1;
assign ce = ce1;
reg up;
mod10_cnt t1(clk, ce, rst, q1, tc1);//10카운터 호출
mod10_cnt t2(clk, tc1, rst, q2, tc2);//10카운터 호출
mod10_cnt t3(clk, tc2, rst, q3, tc3);//10카운터 호출
mod10_cnt t4(clk, tc3, rst, q4, tc4);//10카운터 호출
mod5_cnt t5(clk, tc4, rst, q5, tc5);//5카운터 호출
always @(posedge d or posedge tc5 or posedge rst) //d , tc5 , rst 상승에지 이벤트
if(rst) begin ing <= 1'b0; ce1 <= 1'b0; end //rst 1일 때 반환
else if(d) begin ing <= 1'b1; ce1 <= 1'b1; end //버튼 눌릴 때 카운터,led on
else if(tc5) begin ing <= 1'b0; ce1 <= 1'b0; end //50000카운터 후 카운터,led off
else begin ing <= 1'b0; ce1 <= 1'b0; end //ing led 5초 후 off
endmodule
//각각의 5개 버튼 마다 각각의 차 종류를 지정해주고 버튼이 눌렸을 시에 진행 중 LED가 5초 동안 불이 들어오게 하는 모듈로써
5초는 10KHz에서 동기형 50000 카운터를 통해 표시한다. 버튼이 눌렸을 경우에 d가 1이 되고 진행표시led ing와 ce1이 1이 되어 led가 on이 되고 동기형 50000카운터가 시작한다. 동기형카운터에서 5초에 한번 나오는 tc5가 상승이 되는 순간 진행표시led ing가 Off가 되고 ce1도 0이 되어서 카운터 동작이 멈춘다.
// 초기상태, 차의 종류를 보여줌
module display_tea(clk, rst, seg4, seg3, seg2, seg1);
input clk, rst;
wire [2:0] cout;
reg [15:0] cost;
wire [4:0] sn;
output [6:0] seg4, seg3, seg2, seg1; // 차 종류 표시하는 4개 세그먼트 값
wire tco1, tco2, tco3, tco4, tco5;
wire [3:0] q1, q2, q3, q4;
wire tc, tc1, tc2, tc3, tc4;
mod10_cnt c1(clk, 1'b1, rst, q1, tc); // 1초마다 mod5 카운터를 이용해
mod10_cnt c2(clk, tc, rst, q2, tc1); // 5가지의 차의 종류가 디스플레이 됨
mod10_cnt c3(clk, tc1, rst, q3, tc2);
mod10_cnt c4(clk, tc2, rst, q4, tc3);
mod5_cnt c5 (clk, tc3, rst, cout, tc4);
always @(cout)
case(cout)
3'b000 : cost = 16'b1010_0011_0101_0000; // 대추차 D 350 표시
3'b001 : cost = 16'b1011_0010_0101_0000; // 유자차 U 250 표시
3'b010 : cost = 16'b1100_0011_0101_0000; // 율무차 y 350 표시
3'b011 : cost = 16'b1101_0100_0000_0000; // 인삼차 I 400 표시
3'b100 : cost = 16'b1110_0010_0101_0000; // 녹차 n 250 표시
endcase
sseg_tea SS1 (cost[3:0], seg1); // cost의 4비트 2진 값을
sseg_tea SS2 (cost[7:4], seg2); // 세그먼트로 7비트 값으로 변경
sseg_tea SS3 (cost[11:8], seg3);
sseg_tea SS4 (cost[15:12], seg4);
// seg_scan SS5 (rst, clk, seg4, seg3, seg2, seg1, sn, ssout);
endmodule
3. 핀 할당 설명
- 동전을 나타내는 button[2:0] 에는 키패드 1, 2, 3을 할당
- 음료를 나타내는 button[7:3] 에는 키패드 5, 6, 7, 8, 9를 할당
- 반환버튼 re는 키패드 B를 할당
- 가격 디스플레이 com은 seg5~seg8을 할당
- 음료 종류 디스플레이 sseg_tea는 seg1~seg4 할당
- 가능한 음료를 표시하는 tea_led는 led4~led8 할당
- 세그먼트 값인 sout에는 세그먼트의 a~g 할당
- 진행 led인 ing 는 led1 할당
- clk는 79번 핀 할당
4. 동작사진

키워드

  • 가격15,000
  • 페이지수22페이지
  • 등록일2013.11.06
  • 저작시기2012.10
  • 파일형식한글(hwp)
  • 자료번호#890789
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니