초등 영재들의 디지탈 회로 설계 체험을 위해

by 안태영 | 2017-01-09 21:49
cpld fpga 디지탈 회로 설계 트레이닝

재료

  • AT90USB162 1개
  • XC9572XL-VQ44 1개

도구

  • 오실로스코프
  • 플렛폼 케이블
  • 인두

첨부파일

대상 : 초등 영재 5,6학년

목적 : 디지탈 논리 회로 설계 체험


음 

 애들이 생소한 분야라 가능할까 싶지만....

 한번 해보자! 라는 분위기에


간단하게 아이들이 사용할수 있는 수준의  CPLD를 선정하고,

고가의 장비없이 프로그램을 해 볼 수 있도록 설계하였다.


저렴한 떨이 부품류를 enl지고 뒤져서 싸게 구했다.

덕분에 지금은 구하기도 어렵다.


여러가지 사정을 고려하여 이건 별도의 프로그래밍 장비가 필요 없다.



회로도 설계


아트웍 작업









PCB제작 조립





시험












직접 제작한 다운로더 프로그램





초등생이 만든 코드  - LED PingPong



`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company: 

// Engineer: 

// 

// Create Date:    10:06:22 08/17/2012 

// Design Name: 

// Module Name:    C 

// Project Name: 

// Target Devices: 

// Tool versions: 

// Description: 

//

// Dependencies: 

//

// Revision: 

// Revision 0.01 - File Created

// Additional Comments: 

//

//////////////////////////////////////////////////////////////////////////////////

module C(

    input clk,

input zSW_S1,

input zSW_S2,

input zSW_S3,

input zSW_S4,

input zSW_S5,

input zSW_S6,

input zSW_S7,

input zSW_S8,

input zSW_T1,

    output [7:0] door

    );

    

    reg   [19:0]   cnt;

    wire           ce = 1;

    reg            slow_clk; 

 

always @(negedge clk)

       if (ce == 1)

   cnt <= cnt + 1; 



    always @(*)

    begin

       if ( zSW_S1 ) slow_clk =  cnt[8];

       if ( zSW_S2 )slow_clk =  cnt[9];

       if ( zSW_S3 ) slow_clk =  cnt[10];

       if ( zSW_S4 ) slow_clk =  cnt[11];

    end



    parameter state1 = 4'b0000;

    parameter state2 = 4'b0001;

    parameter state3 = 4'b0010;

    parameter state4 = 4'b0011;

parameter state5 = 4'b0100;

parameter state6 = 4'b0101;

parameter state7 = 4'b0110;

parameter state8 = 4'b0111;

    parameter state9 = 4'b1000;

    parameter stateA = 4'b1001;

    parameter stateB = 4'b1010;

    parameter stateC = 4'b1011;

parameter stateD = 4'b1100;

parameter stateE = 4'b1101;

parameter stateF = 4'b1110;

parameter state0 = 4'b1111;


reg [7:0]door_t;


    (* FSM_ENCODING="ONE-HOT", SAFE_IMPLEMENTATION="NO" *) reg [7:0] state = state1;

 

    always@(negedge slow_clk)

       if (zSW_T1 == 0) begin

          state <= state1;

       end

       else

          (* FULL_CASE, PARALLED_CASE *) case (state)

             state1 : begin

       state <= state2;

 door_t  <= 8'b00000001;

             end

             state2 : begin

       state <= state3;

 door_t  <= 8'b00000010;

             end

             state3 : begin

       state <= state4;

 door_t  <= 8'b00000100;

             end

             state4 : begin

       state <= state5;

 door_t  <= 8'b00001000;

end

state5 : begin

       state <= state6;

 door_t  <= 8'b00010000;

end

state6 : begin

       state <= state7;

 door_t  <= 8'b00100000;

end

state7 : begin

       state <= state8;

 door_t  <= 8'b01000000;

end

state8 : begin

       state <= state9;

 door_t  <= 8'b10000000;

end

state9 : begin

                state <= stateA; 

 door_t  <= 8'b01000000;

end

stateA : begin

       state <= stateB;

 door_t  <= 8'b00100000;

end

stateB : begin

       state <= stateC;

 door_t  <= 8'b00010000;

  end

stateC : begin

       state <= stateD;

 door_t  <= 8'b00001000;

end

stateD : begin

       state <= stateE;

 door_t  <= 8'b00000100;

end

stateE : begin

       state <= stateF;

 door_t  <= 8'b00000010;

end

stateF : begin

       state <= state1;

 door_t  <= 8'b00000001;

end


   endcase


    assign door[0] = ~door_t[0];

assign door[1] = ~door_t[1];

assign door[2] = ~door_t[2];

assign door[3] = ~door_t[3];

assign door[4] = ~door_t[4];

assign door[5] = ~door_t[5];

assign door[6] = ~door_t[6];

assign door[7] = ~door_t[7];


endmodule







댓글 0

FPGA, CPLD 트레이닝키트

초등 영재들의 디지탈 회로 설계 체험을 위해

by 안태영

MADE BY

안태영

fpga, mbed, 아두이노, 회로설계

HELP ME!

이렇게 단순하고 쓰기쉽고 저렴하게 만들어진 CPLD, FPGA키트는 없다. 마에스터고나 용량을 늘려 대학생이 써도 충분하고, 경제성과 편리성이 뛰어나다. 사업화 해 주실분이 있으시다면...

답하기
초등 영재들의 디지탈 회로 설계 체험을 위해현재글