카멜레온 선풍기 프로젝트

정유석·2024년 8월 14일

교육 - 베릴로그

목록 보기
23/28

선풍기 코드

module chameleon_TOP
    (
    input clk, reset_p,
    input [3:0] btn,
    input btn_stop,
    input vauxp6, vauxn6, vauxp7, vauxn7, vauxp15, vauxn15,
    output [3:0] com,
    output [7:0] seg_7,
    output led_r, led_g, led_b,
    output [3:0] led_mode,
    output dc_motor_pwm,
    output servo_motor_pwm, servo_motor_pwm2
    );
    
    
    wire motor_stop;
    wire [7:0] led_duty;

    
    // switching mode section
    // mode 1
    wire mode_switch;
    reg [1:0] current_mode;

   
    button_cntr btn_mode_switch(
        .clk(clk), 
        .reset_p(reset_p), 
        .btn(btn[3]), 
        .btn_pedge(mode_switch)
    );

   
    always @(posedge clk or posedge reset_p) begin
        if (reset_p) begin
            current_mode = 0; 
        end else if (mode_switch) begin
            current_mode <= (current_mode == 2) ? 0 : current_mode + 1;
        end
    end


    wire [3:0] mode1_btn = btn[3:0];
    wire [3:0] mode1_led_mode;
    wire mode1_dc_motor_pwm;
    wire [3:0] mode1_com;
    wire [7:0] mode1_seg_7;
    wire mode1_servo_pwm;
    wire mode1_servo2_pwm;                
         
         
    mode_change mode_c(.clk(clk), .reset_p(reset_p), .btn(mode1_btn), .motor_stop(motor_stop), .vauxp6(vauxp6), .vauxn6(vauxn6),
                            .vauxp7(vauxp7), .vauxn7(vauxn7), .vauxp15(vauxp15), .vauxn15(vauxn15), 
                            .com(mode1_com), .seg_7(mode1_seg_7),
                            .btn_stop(btn_stop), .dc_motor_pwm(mode1_dc_motor_pwm), .led_mode(mode1_led_mode), 
                            .servo_motor_pwm(mode1_servo_pwm), .servo_motor_pwm2(mode1_servo2_pwm), .led_duty(led_duty));    
     
    // mode 2     
    wire [3:0] mode2_com;
    wire [7:0] mode2_seg_7;
    wire mode2_led_r, mode2_led_g, mode2_led_b;
    wire [3:0] mode2_btn = btn[3:0];

    timer_led_soc timer_ctr(.clk(clk), .reset_p(reset_p), .btn(current_mode == 2 ? mode2_btn[3:0] : 3'b0),
                            .com(mode2_com), .seg_7(mode2_seg_7), .led_duty(led_duty),
                            .led_r(mode2_led_r), .led_g(mode2_led_g), .led_b(mode2_led_b), .motor_stop(motor_stop));


    assign dc_motor_pwm = (current_mode == 1) ? mode1_dc_motor_pwm :(current_mode == 2) ? mode1_dc_motor_pwm : 8'b0;
    assign led_mode = (current_mode == 1) ? mode1_led_mode :(current_mode == 2) ? mode1_led_mode : 4'b0;
    
    assign com = (current_mode == 1) ? mode1_com : (current_mode == 2) ? mode2_com : 4'b0;
    assign seg_7 = (current_mode == 1) ? mode1_seg_7 : (current_mode == 2) ? mode2_seg_7 : 8'b0;
    
    assign servo_motor_pwm = (current_mode == 1) ? mode1_servo_pwm : 1'b0;
    assign servo_motor_pwm2 = (current_mode == 1) ? mode1_servo2_pwm : 1'b0;
    
    assign led_r = (current_mode == 1) ? mode2_led_r :(current_mode == 2) ? mode2_led_r : 1'b0;
    assign led_b = (current_mode == 1) ? mode2_led_b :(current_mode == 2) ? mode2_led_b : 1'b0;
    assign led_g = (current_mode == 1) ? mode2_led_g :(current_mode == 2) ? mode2_led_g : 1'b0;



endmodule

//-------------------------------------------------------------------------------------------------------------

module servo_joy
    (
    input clk,reset_p,
    input vauxp6, vauxn6, vauxp7, vauxn7, vauxp15,vauxn15,
    input btn_stop,
    output [3:0] com,
    output [7:0] seg_7,
    output servo_motor_pwm,
    output servo_motor_pwm2,
    output reg [7:0] led_duty
    );
   
    wire [4:0] channel_out;
    wire [15:0] do_out;
    wire eoc_out;
    reg [11:0] duty;
    reg [11:0] duty2;
    
    reg [4:0]prev_channel; // channel is 5bit, seperate each function
   
   xadc_wiz_2 xadc_set
          (
          .daddr_in({2'b0,channel_out}),            // Address bus for the dynamic reconfiguration port
          .dclk_in(clk),             // Clock input for the dynamic reconfiguration port
          .den_in(eoc_out),              // Enable Signal for the dynamic reconfiguration port
          .reset_in(reset_p),            // Reset signal for the System Monitor control logic
          .vauxp6(vauxp6),              // Auxiliary channel 6
          .vauxn6(vauxn6),    
          .vauxp7(vauxp7),              // Auxiliary channel 6
          .vauxn7(vauxn7),
          .vauxp15(vauxp15),              // Auxiliary channel 6
          .vauxn15(vauxn15),
          .channel_out(channel_out),         // Channel Selection Outputs
          .do_out(do_out),              // Output data bus for dynamic reconfiguration port
          .eoc_out(eoc_out)             // End of Conversion Signal
           );

    pwm_Nstep_freq #(.duty_step(5),  //256//trueColor, 8bit, 사람이 느낄 수 있는 색 변화
                     .pwm_freq(10000)     // PWM 주파수 10000Hz, led를 위한 주파수
                    ) 
        pwm_fanlight(
                    .clk(clk),
                    .reset_p(reset_p),
                    .duty(led_duty), // CDS 센서 값을 duty로 사용
                    .pwm(led_fan)
                    );

    wire [15:0] adc_value;
    bin_to_dec bcd_adc(
        .bin({2'b0, do_out[15:6]}), //16비트의 출력을 상위 12비트로만 디지털화 가능, 잡음제거를 위해 10비트만 사용 //bin입력의 12비트크기를 맞추기 위해 상위 2비트 0으로 채움
        .bcd(adc_value)
         );
   
   always @(*)begin
        led_duty = adc_value_cds[7:0]; //do_out[15:8];
   end

              
    wire eoc_out_pedge;
    edge_detector_n ed(.clk(clk), .reset_p(reset_p), .cp(eoc_out), .p_edge(eoc_out_pedge));              
    
    reg [11:0] adc_value_x, adc_value_y;
    reg [7:0] adc_value_cds;
    always @(posedge clk or posedge reset_p)
        if(reset_p) begin
            adc_value_x = 0;
            adc_value_y = 0;
            adc_value_cds = 0;

        end    
        else if(eoc_out_pedge) begin
            case(channel_out[3:0])

                6: adc_value_x = do_out[15:4];
                7: adc_value_y =do_out[15:4];
                15: adc_value_cds = do_out[15:8];//15,8

            endcase
        end
        
        reg [11:0] duty_calc;  // duty 값을 미리 계산하기 위한 임시 레지스터
        reg [11:0] duty_calc2;  
        
    always @(posedge clk or posedge reset_p) begin
        if (reset_p) begin
            duty <= 12'd80;
         
        end else begin
            duty_calc = adc_value_x / 30; // adc_value_x를 6으로 나눈 값을 계산
            
            if (duty_calc >= 30 && duty_calc <= 180 && !btn_stop) begin
                duty <= duty_calc; // 계산된 값이 13과 50 사이일 때만 duty에 할당
            end 
        end
    end
    
    always @(posedge clk or posedge reset_p) begin
        if (reset_p) begin
            duty2 <= 12'd80;
         
        end else begin
            duty_calc2 = adc_value_y / 30; 
            
            if (duty_calc2 >= 30 && duty_calc2 <= 180 && !btn_stop) begin
                duty2 <= duty_calc2; 
            end 
        end
    end

    
    
   pwm_Nstep_freq #(.duty_step(1200),.pwm_freq(50))
            pwm_motor( .clk(clk), .reset_p(reset_p), .duty(duty), .pwm(servo_motor_pwm)); 
   
   pwm_Nstep_freq #(.duty_step(1200),.pwm_freq(50))
           pwm_motor2( .clk(clk), .reset_p(reset_p), .duty(duty2), .pwm(servo_motor_pwm2)); 

    wire [15:0]bcd_x , bcd_y , value;        
    bin_to_dec bcd_adc_x(.bin({6'b0,adc_value_x[11:6]}),.bcd(bcd_x));
    bin_to_dec bcd_adc_y(.bin({6'b0,adc_value_y[11:6]}),.bcd(bcd_y));

    assign value = {bcd_x[7:0], bcd_y[7:0]};
    fnd_cntr fnd_cntr_inst(.clk(clk),.reset_p(reset_p),.value(value), .com(com), .seg_7(seg_7));

           
endmodule 


//-----------------------------------------------------------------------------------------------------------------------------------------

module timer_led_soc(
    input clk, reset_p,
    input [2:0] btn,
    input [7:0] led_duty,
    output [3:0] com,
    output [7:0] seg_7,
    output reg [7:0] led_r, led_g, led_b,
    output reg motor_stop
);

    // 타이머 관련 신호
    wire clk_usec, clk_msec, clk_sec;
    wire btn_start, btn_sec, btn_min;

    clock_div_100 usec_clk(.clk(clk), .reset_p(reset_p), .clk_div_100(clk_usec)); // usec
    clock_div_1000 msec_clk(.clk(clk), .reset_p(reset_p), .clk_source(clk_usec), .clk_div_1000(clk_msec)); // msec
    clock_div_1000 sec_clk(.clk(clk), .reset_p(reset_p), .clk_source(clk_msec), .clk_div_1000_nedge(clk_sec)); // sec

    button_cntr btn0(.clk(clk), .reset_p(reset_p), .btn(btn[0]), .btn_pedge(btn_start)); // 버튼 스타트
    button_cntr btn1(.clk(clk), .reset_p(reset_p), .btn(btn[1]), .btn_pedge(btn_sec));   // 버튼 초-> 3 초 5초 늘어나는 버튼
    button_cntr btn2(.clk(clk), .reset_p(reset_p), .btn(btn[2]), .btn_pedge(btn_min));   // 버튼 분

    reg [1:0] mode;  // 2-bit 상태 레지스터

    // 버튼 입력에 따라 3초, 5초, 10초, 0초로 설정 변경
    always @(posedge clk or posedge reset_p) begin
        if (reset_p) begin
            mode <= 2'b00;  // 초기 상태
        end else if (btn_sec) begin
            mode <= mode + 1;  // 버튼을 누를 때마다 모드 변경
        end
    end

    reg [3:0] set_min10, set_min1, set_sec10, set_sec1;

    // 모드에 따라 설정 값 변경
    always @(*) begin
        case (mode)
            2'b00: begin // 3초 설정
                set_min10 = 4'b0000;
                set_min1  = 4'b0000;
                set_sec10 = 4'b0000;
                set_sec1  = 4'b0011;  // 3
            end
            2'b01: begin // 5초 설정
                set_min10 = 4'b0000;
                set_min1  = 4'b0000;
                set_sec10 = 4'b0000;
                set_sec1  = 4'b0101;  // 5
            end
            2'b10: begin // 10초 설정
                set_min10 = 4'b0000;
                set_min1  = 4'b0000;
                set_sec10 = 4'b0001;
                set_sec1  = 4'b0000;  // 10
            end
            2'b11: begin // 0초 설정
                set_min10 = 4'b0000;
                set_min1  = 4'b0000;
                set_sec10 = 4'b0000;
                set_sec1  = 4'b0000;  // 0
            end
        endcase
    end

    wire [3:0] cur_min10, cur_min1, cur_sec10, cur_sec1;
    wire dec_clk;

    // 다운 카운터 초
    loadable_down_counter_bcd_60 cur_sec(
        .clk(clk), .reset_p(reset_p), .clk_time(clk_sec),
        .load_enable(btn_start), .load_bcd1(set_sec1), .load_bcd10(set_sec10),
        .bcd1(cur_sec1), .bcd10(cur_sec10), .dec_clk(dec_clk)
    );

    // 다운 카운터 분
    loadable_down_counter_bcd_60 cur_min(
        .clk(clk), .reset_p(reset_p), .clk_time(dec_clk),
        .load_enable(btn_start), .load_bcd1(set_min1), .load_bcd10(set_min10),
        .bcd1(cur_min1), .bcd10(cur_min10)
    );

    wire [15:0] value, set_time, cur_time;
    assign set_time = {set_min10, set_min1, set_sec10, set_sec1};
    assign cur_time = {cur_min10, cur_min1, cur_sec10, cur_sec1};
   
    reg start_set;
    always @(posedge clk or posedge reset_p) begin
        if (reset_p) begin
            start_set = 0;
        end else begin
            if (btn_start)
                start_set <= ~start_set;
            else if (cur_time == 0 && start_set) begin
                start_set = 0;
            end
        end
    end

    assign value = start_set ? cur_time : set_time;

    fnd_cntr fnd(
        .clk(clk), .reset_p(reset_p),
        .value(value), .com(com), .seg_7(seg_7)
    );  
    
    // RGB LED PWM 제어
    always @(*) begin
        motor_stop = 0;
        if (cur_time > 16'd5) begin
            // 10초부터 5초까지는 파란색 LED 켜기, 나머지 LED 끄기
            led_r = 8'd0;
            led_g = 8'd0;
            led_b = led_duty;
        end else if (cur_time > 16'd3) begin
            // 5초부터 3초까지는 초록색 LED 켜기, 나머지 LED 끄기
            led_r = 8'd0;
            led_g = led_duty;
            led_b = 8'd0;
        end else if (cur_time > 16'd0) begin
            // 3초부터 0초까지는 빨간색 LED 켜기, 나머지 LED 끄기
            led_r = led_duty;
            led_g = 8'd0;
            led_b = 8'd0;
        end else begin
            // 0초일 때는 모든 LED 끄기
            led_r = 7'd0;
            led_g = 7'd0;
            led_b = 7'd0;
            motor_stop = 1;  // motor 정지 신호
        end
    end
    
endmodule

//------------------------------------------------------------------------------------------------------------------

module cam_fan
(
    input clk, reset_p,
    input [3:0] btn,
    input motor_stop,
    output dc_motor_pwm,
    output reg [3:0] led_mode
);
    parameter mode0 = 2'b00;
    parameter mode1 = 2'b01;
    parameter mode2 = 2'b10;
    parameter mode3 = 2'b11;

    reg [6:0] motor_power;
    wire btn_power;

    dc_motor_pwm_fan fan_cntr( .clk(clk), .reset_p(reset_p), .motor_power(motor_power), .dc_motor_pwm(dc_motor_pwm));

    button_cntr change_power(.clk(clk), .reset_p(reset_p), .btn(btn[2]), .btn_pedge(btn_power));

    reg [1:0] state, next_state;

    always @(posedge clk or posedge reset_p) begin
        if (reset_p) 
            state = mode0;
        else if (motor_stop)
            state = mode0;
        else 
            state = next_state;
    end

    always @(*) begin
        led_mode[3:0] = 0;
        case (state)
            mode0 : begin
                motor_power = 0;
                led_mode[0] = 1;
                next_state = btn_power ? mode1 : mode0;
            end 
            mode1 : begin
                motor_power = 33;
                led_mode[0] = 1;
                led_mode[1] = 1;
                next_state = btn_power ? mode2 : mode1;
            end
            mode2 : begin
                motor_power = 66;
                led_mode[0] = 1;
                led_mode[1] = 1;
                led_mode[2] = 1;
                next_state = btn_power ? mode3 : mode2;
            end
            mode3 : begin
                motor_power = 99;
                led_mode[0] = 1;
                led_mode[1] = 1;
                led_mode[2] = 1;
                led_mode[3] = 1;
                next_state = btn_power ? mode0 : mode3;
            end
            default : begin
                motor_power = 0;
                next_state = mode0;
                led_mode[3:0] = 0;
            end
        endcase
    end

endmodule

//-----------------------------------------------------------------------------------------------------------------------------------------

module mode_change
(
    input clk, reset_p,
    input [3:0] btn,
    input motor_stop,
    input vauxp6, vauxn6, vauxp7, vauxn7, vauxp15,vauxn15,
    input btn_stop,
    output [3:0] com,
    output [7:0] seg_7,
    output dc_motor_pwm,
    output wire [3:0] led_mode,
    output servo_motor_pwm,
    output servo_motor_pwm2,
    output wire [7:0] led_duty
);

    servo_joy     servo_ctr(.clk(clk), .reset_p(reset_p), .vauxp6(vauxp6), .vauxn6(vauxn6),
                            .vauxp7(vauxp7), .vauxn7(vauxn7), .vauxp15(vauxp15), .vauxn15(vauxn15), 
                            .com(com), .seg_7(seg_7), .btn_stop(btn_stop), .servo_motor_pwm(servo_motor_pwm), 
                            .servo_motor_pwm2(servo_motor_pwm2), .led_duty(led_duty));

    cam_fan         fan_ctr(.clk(clk), .reset_p(reset_p), .motor_stop(motor_stop),
                            .btn(btn), .dc_motor_pwm(dc_motor_pwm), .led_mode(led_mode)); 


endmodule

//-----------------------------------------------------------------------------------------------------------------------------------------

xdc

## Switches
#set_property -dict { PACKAGE_PIN V17   IOSTANDARD LVCMOS33 } [get_ports {duty[0]}]
#set_property -dict { PACKAGE_PIN V16   IOSTANDARD LVCMOS33 } [get_ports {duty[1]}]
#set_property -dict { PACKAGE_PIN W16   IOSTANDARD LVCMOS33 } [get_ports {duty[2]}]
#set_property -dict { PACKAGE_PIN W17   IOSTANDARD LVCMOS33 } [get_ports {duty[3]}]
#set_property -dict { PACKAGE_PIN W15   IOSTANDARD LVCMOS33 } [get_ports {duty[4]}]
#set_property -dict { PACKAGE_PIN V15   IOSTANDARD LVCMOS33 } [get_ports {duty[5]}]
#set_property -dict { PACKAGE_PIN W14   IOSTANDARD LVCMOS33 } [get_ports {duty[6]}]
#set_property -dict { PACKAGE_PIN W13   IOSTANDARD LVCMOS33 } [get_ports {switch[7]}]
#set_property -dict { PACKAGE_PIN V2    IOSTANDARD LVCMOS33 } [get_ports {switch[8]}]
#set_property -dict { PACKAGE_PIN T3    IOSTANDARD LVCMOS33 } [get_ports {switch[9]}]
#set_property -dict { PACKAGE_PIN T2    IOSTANDARD LVCMOS33 } [get_ports {switch[10]}]
#set_property -dict { PACKAGE_PIN R3    IOSTANDARD LVCMOS33 } [get_ports {switch[11]}]
#set_property -dict { PACKAGE_PIN W2    IOSTANDARD LVCMOS33 } [get_ports {switch[12]}]
#set_property -dict { PACKAGE_PIN U1    IOSTANDARD LVCMOS33 } [get_ports {switch[13]}]
#set_property -dict { PACKAGE_PIN T1    IOSTANDARD LVCMOS33 } [get_ports {switch[14]}]
#set_property -dict { PACKAGE_PIN R2    IOSTANDARD LVCMOS33 } [get_ports {switch[15]}]


## LEDs
set_property -dict { PACKAGE_PIN U16   IOSTANDARD LVCMOS33 } [get_ports {led_mode[0]}]
set_property -dict { PACKAGE_PIN E19   IOSTANDARD LVCMOS33 } [get_ports {led_mode[1]}]
set_property -dict { PACKAGE_PIN U19   IOSTANDARD LVCMOS33 } [get_ports {led_mode[2]}]
set_property -dict { PACKAGE_PIN V19   IOSTANDARD LVCMOS33 } [get_ports {led_mode[3]}]
#set_property -dict { PACKAGE_PIN W18   IOSTANDARD LVCMOS33 } [get_ports {led_debug[4]}]
#set_property -dict { PACKAGE_PIN U15   IOSTANDARD LVCMOS33 } [get_ports {led_fan}]
#set_property -dict { PACKAGE_PIN U14   IOSTANDARD LVCMOS33 } [get_ports {duty_save_btn}]
#set_property -dict { PACKAGE_PIN V14   IOSTANDARD LVCMOS33 } [get_ports {led_debug[7]}]
#set_property -dict { PACKAGE_PIN V13   IOSTANDARD LVCMOS33 } [get_ports {led_debug[8]}]
#set_property -dict { PACKAGE_PIN V3    IOSTANDARD LVCMOS33 } [get_ports {led_debug[9]}]
#set_property -dict { PACKAGE_PIN W3    IOSTANDARD LVCMOS33 } [get_ports {led_debug[10]}]
#set_property -dict { PACKAGE_PIN U3    IOSTANDARD LVCMOS33 } [get_ports {led_debug[11]}]
#set_property -dict { PACKAGE_PIN P3    IOSTANDARD LVCMOS33 } [get_ports {led_debug[12]}]
#set_property -dict { PACKAGE_PIN N3    IOSTANDARD LVCMOS33 } [get_ports {led_debug[13]}]
#set_property -dict { PACKAGE_PIN P1    IOSTANDARD LVCMOS33 } [get_ports {adc_value_cds}]
#set_property -dict { PACKAGE_PIN L1    IOSTANDARD LVCMOS33 } [get_ports {led_fan}]


##7 Segment Display
set_property -dict { PACKAGE_PIN W7   IOSTANDARD LVCMOS33 } [get_ports {seg_7[7]}]
set_property -dict { PACKAGE_PIN W6   IOSTANDARD LVCMOS33 } [get_ports {seg_7[6]}]
set_property -dict { PACKAGE_PIN U8   IOSTANDARD LVCMOS33 } [get_ports {seg_7[5]}]
set_property -dict { PACKAGE_PIN V8   IOSTANDARD LVCMOS33 } [get_ports {seg_7[4]}]
set_property -dict { PACKAGE_PIN U5   IOSTANDARD LVCMOS33 } [get_ports {seg_7[3]}]
set_property -dict { PACKAGE_PIN V5   IOSTANDARD LVCMOS33 } [get_ports {seg_7[2]}]
set_property -dict { PACKAGE_PIN U7   IOSTANDARD LVCMOS33 } [get_ports {seg_7[1]}]

set_property -dict { PACKAGE_PIN V7   IOSTANDARD LVCMOS33 } [get_ports seg_7[0]]

set_property -dict { PACKAGE_PIN U2   IOSTANDARD LVCMOS33 } [get_ports {com[0]}]
set_property -dict { PACKAGE_PIN U4   IOSTANDARD LVCMOS33 } [get_ports {com[1]}]
set_property -dict { PACKAGE_PIN V4   IOSTANDARD LVCMOS33 } [get_ports {com[2]}]
set_property -dict { PACKAGE_PIN W4   IOSTANDARD LVCMOS33 } [get_ports {com[3]}]


##Buttons
set_property -dict { PACKAGE_PIN U18   IOSTANDARD LVCMOS33 } [get_ports reset_p]
set_property -dict { PACKAGE_PIN T18   IOSTANDARD LVCMOS33 } [get_ports btn[0]]
set_property -dict { PACKAGE_PIN W19   IOSTANDARD LVCMOS33 } [get_ports btn[1]]
set_property -dict { PACKAGE_PIN T17   IOSTANDARD LVCMOS33 } [get_ports btn[2]]
set_property -dict { PACKAGE_PIN U17   IOSTANDARD LVCMOS33 } [get_ports btn[3]]


##Pmod Header JA
set_property -dict { PACKAGE_PIN J1   IOSTANDARD LVCMOS33 } [get_ports {led_r}];#Sch name = JA1
set_property -dict { PACKAGE_PIN L2   IOSTANDARD LVCMOS33 } [get_ports {led_g}];#Sch name = JA2
set_property -dict { PACKAGE_PIN J2   IOSTANDARD LVCMOS33 } [get_ports {led_b}];#Sch name = JA3
set_property -dict { PACKAGE_PIN G2   IOSTANDARD LVCMOS33 PULLUP TRUE} [get_ports {btn_stop}];#Sch name = JA4
#set_property -dict { PACKAGE_PIN H1   IOSTANDARD LVCMOS33 } [get_ports {servomotor_pwm}];#Sch name = JA7
#set_property -dict { PACKAGE_PIN K2   IOSTANDARD LVCMOS33 } [get_ports {JA[5]}];#Sch name = JA8
#set_property -dict { PACKAGE_PIN H2   IOSTANDARD LVCMOS33 } [get_ports {JA[6]}];#Sch name = JA9
#set_property -dict { PACKAGE_PIN G3   IOSTANDARD LVCMOS33 } [get_ports {JA[7]}];#Sch name = JA10

##Pmod Header JB
#set_property -dict { PACKAGE_PIN A14   IOSTANDARD LVCMOS33 } [get_ports {servomotor_pwm}}];#Sch name = JB1
set_property -dict { PACKAGE_PIN A16   IOSTANDARD LVCMOS33 } [get_ports {servo_motor_pwm}];#Sch name = JB2
set_property -dict { PACKAGE_PIN B15   IOSTANDARD LVCMOS33 } [get_ports {servo_motor_pwm2}];#Sch name = JB3
#set_property -dict { PACKAGE_PIN B16   IOSTANDARD LVCMOS33 } [get_ports {col[3]}];#Sch name = JB4
#set_property -dict { PACKAGE_PIN A15   IOSTANDARD LVCMOS33 PULLDOWN TRUE} [get_ports {row[0]}];#Sch name = JB7
#set_property -dict { PACKAGE_PIN A17   IOSTANDARD LVCMOS33 PULLDOWN TRUE} [get_ports {row[1]}];#Sch name = JB8
#set_property -dict { PACKAGE_PIN C15   IOSTANDARD LVCMOS33 PULLDOWN TRUE} [get_ports {row[2]}];#Sch name = JB9
#set_property -dict { PACKAGE_PIN C16   IOSTANDARD LVCMOS33 PULLDOWN TRUE} [get_ports {row[3]}];#Sch name = JB10

##Pmod Header JC
#set_property -dict { PACKAGE_PIN K17   IOSTANDARD LVCMOS33 } [get_ports {ECHO}];#Sch name = JC1
#set_property -dict { PACKAGE_PIN M18   IOSTANDARD LVCMOS33 } [get_ports {TRIG}];#Sch name = JC2
set_property -dict { PACKAGE_PIN N17   IOSTANDARD LVCMOS33 } [get_ports {dc_motor_pwm}];#Sch name = JC3
#set_property -dict { PACKAGE_PIN P18   IOSTANDARD LVCMOS33 } [get_ports {dht11_data}];#Sch name = JC4
#set_property -dict { PACKAGE_PIN L17   IOSTANDARD LVCMOS33 } [get_ports {dht11_data}];#Sch name = JC7
#set_property -dict { PACKAGE_PIN M19   IOSTANDARD LVCMOS33 } [get_ports {JC[5]}];#Sch name = JC8
#set_property -dict { PACKAGE_PIN P17   IOSTANDARD LVCMOS33 } [get_ports {motor_pwm}];#Sch name = JC9
#set_property -dict { PACKAGE_PIN R18   IOSTANDARD LVCMOS33 } [get_ports {JC[7]}];#Sch name = JC10

##Pmod Header JXADC
set_property -dict { PACKAGE_PIN J3   IOSTANDARD LVCMOS33 } [get_ports {vauxp6}];#Sch name = XA1_P
#set_property -dict { PACKAGE_PIN L3   IOSTANDARD LVCMOS33 } [get_ports {vauxp15}];#Sch name = XA2_P
set_property -dict { PACKAGE_PIN M2   IOSTANDARD LVCMOS33 } [get_ports {vauxp7}];#Sch name = XA3_P
set_property -dict { PACKAGE_PIN N2   IOSTANDARD LVCMOS33 } [get_ports {vauxp15}];#Sch name = XA4_P
set_property -dict { PACKAGE_PIN K3   IOSTANDARD LVCMOS33 } [get_ports {vauxn6}];#Sch name = XA1_N
#set_property -dict { PACKAGE_PIN M3   IOSTANDARD LVCMOS33 } [get_ports {vauxn15}];#Sch name = XA2_N
set_property -dict { PACKAGE_PIN M1   IOSTANDARD LVCMOS33 } [get_ports {vauxn7}];#Sch name = XA3_N
set_property -dict { PACKAGE_PIN N1   IOSTANDARD LVCMOS33 } [get_ports {vauxn15}];#Sch name = XA4_N


##VGA Connector
#set_property -dict { PACKAGE_PIN G19   IOSTANDARD LVCMOS33 } [get_ports {vgaRed[0]}]
#set_property -dict { PACKAGE_PIN H19   IOSTANDARD LVCMOS33 } [get_ports {vgaRed[1]}]
#set_property -dict { PACKAGE_PIN J19   IOSTANDARD LVCMOS33 } [get_ports {vgaRed[2]}]
#set_property -dict { PACKAGE_PIN N19   IOSTANDARD LVCMOS33 } [get_ports {vgaRed[3]}]
#set_property -dict { PACKAGE_PIN N18   IOSTANDARD LVCMOS33 } [get_ports {vgaBlue[0]}]
#set_property -dict { PACKAGE_PIN L18   IOSTANDARD LVCMOS33 } [get_ports {vgaBlue[1]}]
#set_property -dict { PACKAGE_PIN K18   IOSTANDARD LVCMOS33 } [get_ports {vgaBlue[2]}]
#set_property -dict { PACKAGE_PIN J18   IOSTANDARD LVCMOS33 } [get_ports {vgaBlue[3]}]
#set_property -dict { PACKAGE_PIN J17   IOSTANDARD LVCMOS33 } [get_ports {vgaGreen[0]}]
#set_property -dict { PACKAGE_PIN H17   IOSTANDARD LVCMOS33 } [get_ports {vgaGreen[1]}]
#set_property -dict { PACKAGE_PIN G17   IOSTANDARD LVCMOS33 } [get_ports {vgaGreen[2]}]
#set_property -dict { PACKAGE_PIN D17   IOSTANDARD LVCMOS33 } [get_ports {vgaGreen[3]}]
#set_property -dict { PACKAGE_PIN P19   IOSTANDARD LVCMOS33 } [get_ports Hsync]
#set_property -dict { PACKAGE_PIN R19   IOSTANDARD LVCMOS33 } [get_ports Vsync]


##USB-RS232 Interface
#set_property -dict { PACKAGE_PIN B18   IOSTANDARD LVCMOS33 } [get_ports RsRx]
#set_property -dict { PACKAGE_PIN A18   IOSTANDARD LVCMOS33 } [get_ports RsTx]


##USB HID (PS/2)
#set_property -dict { PACKAGE_PIN C17   IOSTANDARD LVCMOS33   PULLUP true } [get_ports PS2Clk]
#set_property -dict { PACKAGE_PIN B17   IOSTANDARD LVCMOS33   PULLUP true } [get_ports PS2Data]


##Quad SPI Flash
##Note that CCLK_0 cannot be placed in 7 series devices. You can access it using the
##STARTUPE2 primitive.
#set_property -dict { PACKAGE_PIN D18   IOSTANDARD LVCMOS33 } [get_ports {QspiDB[0]}]
#set_property -dict { PACKAGE_PIN D19   IOSTANDARD LVCMOS33 } [get_ports {QspiDB[1]}]
#set_property -dict { PACKAGE_PIN G18   IOSTANDARD LVCMOS33 } [get_ports {QspiDB[2]}]
#set_property -dict { PACKAGE_PIN F18   IOSTANDARD LVCMOS33 } [get_ports {QspiDB[3]}]
#set_property -dict { PACKAGE_PIN K19   IOSTANDARD LVCMOS33 } [get_ports QspiCSn]
profile
개인 기록공간

0개의 댓글