From 1bb62151ef7f4853b8f3118e242d6e53fe998e7f Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 21 Feb 2024 22:11:54 +0800 Subject: [PATCH] v1.0 --- .gitignore | 2 + output_file_1.jic | Bin 0 -> 2097376 bytes output_file_1.map | 11 +++ run_led.eda.rpt | 59 +++++++++++++++ run_led.jdi | 2 +- run_led.pin | 10 +-- run_led.pof | Bin 8388815 -> 8388815 bytes run_led.qsf | 10 ++- run_led.sof | Bin 358633 -> 358633 bytes run_led.sta.summary | 60 +++++++++++++++ source/light_ctrl_pluse_generator.v | 142 +++++++++++++++++++++++++++++++++++ source/shutter_pulse_generator.v | 44 +++++++++++ source/top_module.v | 92 +++++++++++++++++------ source/zutils_edge_detecter.v | 49 ++++++++++++ source/zutils_pluse_width_detecter.v | 49 ++++++++++++ source/zutils_reset_sig_gen.v | 17 +++++ 16 files changed, 517 insertions(+), 30 deletions(-) create mode 100644 output_file_1.jic create mode 100644 output_file_1.map create mode 100644 run_led.eda.rpt create mode 100644 source/light_ctrl_pluse_generator.v create mode 100644 source/shutter_pulse_generator.v create mode 100644 source/zutils_edge_detecter.v create mode 100644 source/zutils_pluse_width_detecter.v create mode 100644 source/zutils_reset_sig_gen.v diff --git a/.gitignore b/.gitignore index a0b2d4f..977419a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ run_led.fit.summary run_led.flow.rpt run_led.map.summary run_led.sta.rpt +output_file.jic +output_file.map diff --git a/output_file_1.jic b/output_file_1.jic new file mode 100644 index 0000000000000000000000000000000000000000..1dbe9b5bed592c82938fdd0f636acb18bd6e6c62 GIT binary patch literal 2097376 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 - + diff --git a/run_led.pin b/run_led.pin index 6f049a7..f072b58 100644 --- a/run_led.pin +++ b/run_led.pin @@ -100,7 +100,7 @@ VCCINT : 29 : power : : 1.2V RESERVED_INPUT : 30 : : : : 2 : RESERVED_INPUT : 31 : : : : 2 : RESERVED_INPUT : 32 : : : : 2 : -debug_light[0] : 33 : output : 3.3-V LVTTL : : 2 : Y +camera_shutter_out : 33 : output : 3.3-V LVTTL : : 2 : Y RESERVED_INPUT : 34 : : : : 2 : VCCA1 : 35 : power : : 2.5V : : GNDA1 : 36 : gnd : : : : @@ -120,7 +120,7 @@ RESERVED_INPUT : 49 : : : lt_on_off_ctrl_1 : 50 : output : 3.3-V LVTTL : : 3 : Y lt_on_off_ctrl_2 : 51 : output : 3.3-V LVTTL : : 3 : Y RESERVED_INPUT : 52 : : : : 3 : -RESERVED_INPUT : 53 : : : : 3 : +tp5 : 53 : output : 3.3-V LVTTL : : 3 : N RESERVED_INPUT : 54 : : : : 4 : RESERVED_INPUT : 55 : : : : 4 : VCCIO4 : 56 : power : : 3.3V : 4 : @@ -177,7 +177,7 @@ stm32_pc6 : 106 : input : 3.3-V LVTTL : VCCA2 : 107 : power : : 2.5V : : GNDA2 : 108 : gnd : : : : VCCD_PLL2 : 109 : power : : 1.2V : : -camera_shutter_out : 110 : output : 3.3-V LVTTL : : 7 : N +debug_light[0] : 110 : output : 3.3-V LVTTL : : 7 : Y RESERVED_INPUT : 111 : : : : 7 : RESERVED_INPUT : 112 : : : : 7 : RESERVED_INPUT : 113 : : : : 7 : @@ -193,7 +193,7 @@ VCCIO7 : 122 : power : : 3.3V GND : 123 : gnd : : : : RESERVED_INPUT : 124 : : : : 7 : RESERVED_INPUT : 125 : : : : 7 : -tp5 : 126 : output : 3.3-V LVTTL : : 7 : N +RESERVED_INPUT : 126 : : : : 7 : RESERVED_INPUT : 127 : : : : 7 : RESERVED_INPUT : 128 : : : : 8 : RESERVED_INPUT : 129 : : : : 8 : @@ -211,5 +211,5 @@ GND : 140 : gnd : : stm32_pa3 : 141 : input : 3.3-V LVTTL : : 8 : Y stm32_pa2 : 142 : input : 3.3-V LVTTL : : 8 : Y stm32_pa1 : 143 : input : 3.3-V LVTTL : : 8 : Y -stm32_pa0 : 144 : output : 3.3-V LVTTL : : 8 : Y +stm32_pa0 : 144 : input : 3.3-V LVTTL : : 8 : Y GND : EPAD : : : : : diff --git a/run_led.pof b/run_led.pof index 2bf8f9f36c2b7eda5e0392d20966b0a234170ad6..67ef7840b0f218d48b12cde64ee48607b58e353c 100644 GIT binary patch delta 13399 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 BAa(!% delta 3724 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 ROm_SrQnMC|)r7XR{0|wVF^m8J diff --git a/run_led.sta.summary b/run_led.sta.summary index 33f7436..43ae4b1 100644 --- a/run_led.sta.summary +++ b/run_led.sta.summary @@ -2,4 +2,64 @@ TimeQuest Timing Analyzer Summary ------------------------------------------------------------ +Type : Slow 1200mV 85C Model Setup 'clk' +Slack : -4.581 +TNS : -421.206 + +Type : Slow 1200mV 85C Model Hold 'clk' +Slack : 0.433 +TNS : 0.000 + +Type : Slow 1200mV 85C Model Recovery 'clk' +Slack : -1.252 +TNS : -31.619 + +Type : Slow 1200mV 85C Model Removal 'clk' +Slack : 0.694 +TNS : 0.000 + +Type : Slow 1200mV 85C Model Minimum Pulse Width 'clk' +Slack : -3.000 +TNS : -169.544 + +Type : Slow 1200mV 0C Model Setup 'clk' +Slack : -4.240 +TNS : -386.456 + +Type : Slow 1200mV 0C Model Hold 'clk' +Slack : 0.382 +TNS : 0.000 + +Type : Slow 1200mV 0C Model Recovery 'clk' +Slack : -1.111 +TNS : -26.036 + +Type : Slow 1200mV 0C Model Removal 'clk' +Slack : 0.625 +TNS : 0.000 + +Type : Slow 1200mV 0C Model Minimum Pulse Width 'clk' +Slack : -3.000 +TNS : -169.544 + +Type : Fast 1200mV 0C Model Setup 'clk' +Slack : -1.267 +TNS : -110.384 + +Type : Fast 1200mV 0C Model Hold 'clk' +Slack : 0.179 +TNS : 0.000 + +Type : Fast 1200mV 0C Model Recovery 'clk' +Slack : -0.045 +TNS : -0.090 + +Type : Fast 1200mV 0C Model Removal 'clk' +Slack : 0.305 +TNS : 0.000 + +Type : Fast 1200mV 0C Model Minimum Pulse Width 'clk' +Slack : -3.000 +TNS : -151.106 + ------------------------------------------------------------ diff --git a/source/light_ctrl_pluse_generator.v b/source/light_ctrl_pluse_generator.v new file mode 100644 index 0000000..c473b05 --- /dev/null +++ b/source/light_ctrl_pluse_generator.v @@ -0,0 +1,142 @@ + +module light_ctrl_pluse_generator ( + input clk, + input rst_n, + + input wire [31:0] pluse_width, + input wire [31:0] pluse_interval, + + // 触发输入引脚 + input trigger, //触发输入 + + output reg output_1, //指示灯通断控制输出 + output reg output_2, //指示灯通断控制输出 + output reg output_3, //指示灯通断控制输出 + output reg output_4 //指示灯通断控制输出 + +); + + wire trigger_r_edge; + wire trigger_f_edge; + + zutils_edge_detecter tigger_signal_in ( + .clk(clk), + .rst_n(rst_n), + .in_signal(trigger), + .in_signal_rising_edge(trigger_r_edge), + .in_signal_falling_edge(trigger_f_edge) + ); + + reg [31:0] state; + reg [31:0] pluse_width_cache; + reg [31:0] pluse_interval_cache; + reg [31:0] cnt; + + always @(posedge clk or negedge rst_n) begin + if (!rst_n) begin + state <= 0; + output_1 <= 0; + output_2 <= 0; + output_3 <= 0; + output_4 <= 0; + end else begin + case (state) + 0: begin + if (trigger_r_edge) begin + + if (pluse_width <= 250) begin // 100ns + pluse_width_cache <= 250; // 100ns + end else begin + pluse_width_cache <= pluse_width; // + end + + if (pluse_interval <= 5) begin // 100ns + pluse_interval_cache <= 5; // 100ns + end else begin + pluse_interval_cache <= pluse_interval; // + end + + state <= 1; + output_1 <= 1; + cnt <= 0; + end + end + 1: begin + if (cnt >= pluse_width_cache) begin + output_1 <= 0; + state <= 2; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + 2: begin + if (cnt >= pluse_interval_cache) begin + output_2 <= 1; + state <= 3; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + + 3: begin + if (cnt >= pluse_width_cache) begin + output_2 <= 0; + state <= 4; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + + 4: begin + if (cnt >= pluse_interval_cache) begin + output_3 <= 1; + state <= 5; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + + 5: begin + if (cnt >= pluse_width_cache) begin + output_3 <= 0; + state <= 6; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + + 6: begin + if (cnt >= pluse_interval_cache) begin + output_4 <= 1; + state <= 7; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + + 7: begin + if (cnt >= pluse_width_cache) begin + output_4 <= 0; + state <= 0; + cnt <= 0; + end else begin + cnt <= cnt + 1; + end + end + + default: begin + state <= 0; + end + + endcase + end + end + + +endmodule diff --git a/source/shutter_pulse_generator.v b/source/shutter_pulse_generator.v new file mode 100644 index 0000000..a041db3 --- /dev/null +++ b/source/shutter_pulse_generator.v @@ -0,0 +1,44 @@ + +module shutter_pulse_generator ( + input clk, + input rst_n, + + input wire [31:0] pluse_width, + // 触发输入引脚 + input trigger, //触发输入 + output wire output_sig //指示灯通断控制输出 +); + + reg [31:0] cnt; + reg output_sig_0; + reg [31:0] pluse_width_cache; + + always @(posedge clk or negedge rst_n) begin + if (!rst_n) begin + cnt <= 0; + output_sig_0 <= 0; + end else begin + if (trigger) begin + if (cnt == 0) begin + cnt <= cnt + 1; + pluse_width_cache <= pluse_width; + output_sig_0 <= 0; + end else begin + if (cnt <= pluse_width_cache) begin + cnt <= cnt + 1; + output_sig_0 <= 0; + end else begin + cnt <= cnt; + output_sig_0 <= 1; + end + end + end else begin + cnt <= 0; + output_sig_0 <= 0; + end + end + end + + assign output_sig = output_sig_0 & trigger; + +endmodule diff --git a/source/top_module.v b/source/top_module.v index b7a4b65..2cf1dcc 100644 --- a/source/top_module.v +++ b/source/top_module.v @@ -8,14 +8,13 @@ module top_module ( input stm32_pc8, // 灯光强度控制PWM input stm32_pc9, // 灯光强度控制PWM - input stm32_pa1, // 快门控制 - input stm32_pa2, // 快门控制 - input stm32_pa3, // 快门控制 - input stm32_pa4, // 快门控制 - input stm32_pa5, // 快门控制 + input stm32_pa0, + input stm32_pa1, + input stm32_pa2, + input stm32_pa3, + input stm32_pa4, + input stm32_pa5, - //output_to_stm32 - output stm32_pa0, // 输入捕获 //光强控制引脚 output lt_intensity_1, //灯光强度控制输出 @@ -31,11 +30,9 @@ module top_module ( output camera_shutter_out, //相机快门控制输出 - // 触发输入引脚 input trigger_input0, //触发输入 - //测试引脚 // output spi2_miso, //用于测试的SPI输出 @@ -47,23 +44,74 @@ module top_module ( output [2:0] debug_light ); + + /******************************************************************************* + * 复位信号生成器 * + *******************************************************************************/ + wire rst_n; + zutils_reset_sig_gen reset_sig_gen0 ( + .clk(clk), + .rst_n_out(rst_n) + ); + + + + + wire [31:0] pluse_width; // 脉冲宽度 + wire [31:0] pluse_interval; //脉冲间隙 + wire [31:0] pluse_shutter_delay; //快门延迟 + + + zutils_pluse_width_detecter pluse_width_detecter0 ( + .clk(clk), + .rst_n(rst_n), + .in_signal(stm32_pa0), + .in_signal_pluse_width(pluse_width) + ); + + zutils_pluse_width_detecter pluse_width_detecter1 ( + .clk(clk), + .rst_n(rst_n), + .in_signal(stm32_pa1), + .in_signal_pluse_width(pluse_interval) + ); + + zutils_pluse_width_detecter pluse_width_detecter2 ( + .clk(clk), + .rst_n(rst_n), + .in_signal(stm32_pa2), + .in_signal_pluse_width(pluse_shutter_delay) + ); + + + light_ctrl_pluse_generator light_ctrl_pluse_generator0 ( + .clk(clk), + .rst_n(rst_n), + .trigger(trigger_input0), + .pluse_width(pluse_width), + .pluse_interval(pluse_interval), + .output_1(lt_on_off_ctrl_1), + .output_2(lt_on_off_ctrl_2), + .output_3(lt_on_off_ctrl_3), + .output_4(lt_on_off_ctrl_4) + ); + + + wire shutter_ctrl_0; + shutter_pulse_generator shutter_pulse_generator0 ( + .clk(clk), + .rst_n(rst_n), + .pluse_width(pluse_shutter_delay), + .trigger(lt_on_off_ctrl_1 | lt_on_off_ctrl_2 | lt_on_off_ctrl_3 | lt_on_off_ctrl_4), + .output_sig(shutter_ctrl_0) + ); + + + assign camera_shutter_out = shutter_ctrl_0; assign lt_intensity_1 = stm32_pc6; assign lt_intensity_2 = stm32_pc7; assign lt_intensity_3 = stm32_pc8; assign lt_intensity_4 = stm32_pc9; - assign lt_on_off_ctrl_1 = stm32_pa1; - assign lt_on_off_ctrl_2 = stm32_pa2; - assign lt_on_off_ctrl_3 = stm32_pa3; - assign lt_on_off_ctrl_4 = stm32_pa4; - assign camera_shutter_out = stm32_pa5; - - assign stm32_pa0 = !trigger_input0; - - assign debug_light[0] = 1; - assign debug_light[1] = 0; - assign debug_light[2] = 0; - - assign tp8 = !trigger_input0; endmodule diff --git a/source/zutils_edge_detecter.v b/source/zutils_edge_detecter.v new file mode 100644 index 0000000..91040bd --- /dev/null +++ b/source/zutils_edge_detecter.v @@ -0,0 +1,49 @@ +module zutils_edge_detecter ( + input clk, //clock input + input rst_n, //asynchronous reset input, low active + input wire in_signal, + output reg in_signal_last, + output reg in_signal_rising_edge, + output reg in_signal_falling_edge, + output reg in_signal_edge +); + + // initial begin + // in_signal_last = 0; + // in_signal_rising_edge = 0; + // in_signal_falling_edge = 0; + // in_signal_edge = 0; + // end + + + + always @(posedge clk or negedge rst_n) begin + if (!rst_n) begin + in_signal_last <= 0; + end else begin + in_signal_last <= in_signal; + end + end + + always @(posedge clk or negedge rst_n) begin + if (!rst_n) begin + in_signal_rising_edge <= 0; + in_signal_falling_edge <= 0; + in_signal_edge <= 0; + end else begin + if (in_signal_last == 0 && in_signal == 1) begin + in_signal_rising_edge <= 1; + in_signal_falling_edge <= 0; + in_signal_edge <= 1; + end else if (in_signal_last == 1 && in_signal == 0) begin + in_signal_rising_edge <= 0; + in_signal_falling_edge <= 1; + in_signal_edge <= 1; + end else begin + in_signal_rising_edge <= 0; + in_signal_falling_edge <= 0; + in_signal_edge <= 0; + end + end + end +endmodule diff --git a/source/zutils_pluse_width_detecter.v b/source/zutils_pluse_width_detecter.v new file mode 100644 index 0000000..d7c449a --- /dev/null +++ b/source/zutils_pluse_width_detecter.v @@ -0,0 +1,49 @@ +module zutils_pluse_width_detecter ( + input clk, //clock input + input rst_n, //asynchronous reset input, low active + input wire in_signal, + output reg [31:0] in_signal_pluse_width +); + + wire rising_edge; + wire falling_edge; + + zutils_edge_detecter _signal_in ( + .clk(CLK), + .rst_n(RSTn), + .in_signal(in_signal), + .in_signal_rising_edge(rising_edge), + .in_signal_falling_edge(falling_edge) + ); + + reg [31:0] pluse_width_cnt; + reg state; + + always @(posedge CLK or negedge RSTn) begin + if (!RSTn) begin + in_signal_pluse_width <= 1; + pluse_width_cnt <= 1; + state <= 0; + end else begin + + if (!state) begin + if (rising_edge) begin + pluse_width_cnt <= 0; + state <= 1; + end + end else begin + pluse_width_cnt <= pluse_width_cnt + 1; + if (falling_edge) begin + in_signal_pluse_width <= pluse_width_cnt; + state <= 0; + end + end + + end + end + + + + + +endmodule diff --git a/source/zutils_reset_sig_gen.v b/source/zutils_reset_sig_gen.v new file mode 100644 index 0000000..1b50957 --- /dev/null +++ b/source/zutils_reset_sig_gen.v @@ -0,0 +1,17 @@ +module zutils_reset_sig_gen ( + input clk, //clock input + output reg rst_n_out +); + + reg [31:0] counter = 0; + always @(posedge clk) begin + if (counter < 31'd1000000) begin + rst_n_out <= 0; + counter <= counter + 1; + end else begin + counter <= counter; + rst_n_out <= 1; + end + end + +endmodule