
선풍기 코드
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]