Browse Source

update

master
zhaohe 1 year ago
parent
commit
923d3bcce3
  1. 56
      led_test.pds
  2. 88
      source/src/output/camera_sync_signal_output.v

56
led_test.pds

@ -1,5 +1,5 @@
(_flow fab_demo "2021.1-SP7"
(_comment "Generated by Fabric Compiler (version on 2021.1-SP7<build 86875>) at Tue Mar 5 19:20:17 2024")
(_comment "Generated by Fabric Compiler (version on 2021.1-SP7<build 86875>) at Tue Mar 5 19:27:36 2024")
(_version "1.0.5")
(_status "initial")
(_project
@ -369,8 +369,40 @@
)
(_task tsk_pnr
(_command cmd_pnr
(_gci_state (_integer 0))
(_gci_state (_integer 2))
(_option mode (_string "fast"))
(_db_output
(_file "place_route/Top_pnr.adf"
(_format adif)
(_timespec "2024-03-05T19:26:10")
)
)
(_output
(_file "place_route/Top.prr"
(_format text)
(_timespec "2024-03-05T19:26:10")
)
(_file "place_route/Top_prr.prt"
(_format text)
(_timespec "2024-03-05T19:26:08")
)
(_file "place_route/clock_utilization.txt"
(_format text)
(_timespec "2024-03-05T19:26:08")
)
(_file "place_route/Top_plc.adf"
(_format adif)
(_timespec "2024-03-05T19:21:27")
)
(_file "place_route/Top_pnr.netlist"
(_format text)
(_timespec "2024-03-05T19:26:10")
)
(_file "place_route/prr.db"
(_format text)
(_timespec "2024-03-05T19:26:12")
)
)
)
(_widget wgt_power_calculator
(_attribute _click_to_run (_switch ON))
@ -399,7 +431,25 @@
)
(_task tsk_gen_bitstream
(_command cmd_gen_bitstream
(_gci_state (_integer 0))
(_gci_state (_integer 2))
(_output
(_file "generate_bitstream/Top.sbit"
(_format text)
(_timespec "2024-03-05T19:27:34")
)
(_file "generate_bitstream/Top.smsk"
(_format text)
(_timespec "2024-03-05T19:27:34")
)
(_file "generate_bitstream/Top.bgr"
(_format text)
(_timespec "2024-03-05T19:27:34")
)
(_file "generate_bitstream/bgr.db"
(_format text)
(_timespec "2024-03-05T19:27:36")
)
)
)
)
)

88
source/src/output/camera_sync_signal_output.v

@ -1,10 +1,3 @@
//
// @功能:
// 1. 功能:同步输出,脉冲输出
// 2. 输出脉冲
// 3. 输出脉冲时长可调
// 4. 输出极性可调
//
module camera_sync_signal_output #(
parameter REG_START_ADD = 0,
parameter SYS_CLOCK_FREQ = 10000000
@ -18,36 +11,21 @@ module camera_sync_signal_output #(
input wr_en,
output wire [31:0] rd_data,
input internal_genlock_sig,
input ext_genlock_sig,
input test_100hz_sig,
input frame_sig,
input record_en_sig,
output stm32if_camera_sync_out //ttl输出信号
output stm32if_camera_sync_out, //ttl输出信号
output stm32if_record_sync_out //
);
/*******************************************************************************
* 寄存器列表 *
*******************************************************************************/
//
// 输入信号选择器
// 0: 关闭
// 1: 内部genlock
// 2: 外部genlock
// 31: 100HZ测试信号
//
wire [31:0] reg_input_signal_select;
//
// 脉冲模式-有效电平长度:
// 0~0xffffffff
//
wire [31:0] reg_pulse_mode_valid_len; // 脉冲模式-有效电平长度: 0~0xffffffff
reg [31:0] reg1_pulse_mode_valid_len;
wire [31:0] reg_wr_index;
zutils_register16 #(
.REG_START_ADD(REG_START_ADD),
.REG0_INIT(0),
.REG1_INIT(SYS_CLOCK_FREQ / 10000) //1ms
zutils_register_advanced #(
.REG_START_ADD(REG_START_ADD)
) _register (
.clk (clk),
.rst_n (rst_n),
@ -55,49 +33,51 @@ module camera_sync_signal_output #(
.wr_data (wr_data),
.wr_en (wr_en),
.rd_data (rd_data),
.reg0(reg_input_signal_select),
.reg1(reg_pulse_mode_valid_len)
.reg1 (reg1_pulse_mode_valid_len),
.reg_wr_sig(reg_wr_sig),
.reg_index (reg_wr_index)
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
reg1_pulse_mode_valid_len <= 0;
end else begin
if (reg_wr_sig) begin
case (reg_wr_index)
1: reg1_pulse_mode_valid_len <= wr_data;
default: begin
end
endcase
end
end
end
/*******************************************************************************
* 内部信号 *
*******************************************************************************/
wire in_signal_rising_edge;
wire signal_in_choose;
wire signal_pluse_output;
wire frame_sig_rising_edge;
wire frame_sig_fa_process;
wire [31:0] signal_in;
assign signal_in[0] = 0;
assign signal_in[1] = internal_genlock_sig;
assign signal_in[2] = ext_genlock_sig;
assign signal_in[31] = test_100hz_sig;
zutils_multiplexer_32t1 _signal_select (
.chooseindex(reg_input_signal_select),
.signal(signal_in),
.signalout(signal_in_choose)
);
// 边沿检测
zutils_edge_detecter _signal_in (
.clk (clk),
.rst_n (rst_n),
.in_signal(signal_in_choose),
.in_signal_rising_edge(in_signal_rising_edge)
.in_signal (frame_sig),
.in_signal_rising_edge(frame_sig_rising_edge)
);
// 短脉冲触发生成长脉冲
zutils_pluse_generator _pluse_generator (
.clk (clk),
.rst_n (rst_n),
.pluse_width(reg_pulse_mode_valid_len),
.pluse_width (SYS_CLOCK_FREQ / 1000), //100us
.pluse_delay (0),
.trigger(in_signal_rising_edge),
.output_signal(signal_pluse_output)
.trigger (frame_sig_rising_edge),
.output_signal(frame_sig_fa_process)
);
assign stm32if_camera_sync_out = signal_pluse_output;
assign stm32if_camera_sync_out = frame_sig_fa_process;
assign stm32if_record_sync_out = record_en_sig;
endmodule
Loading…
Cancel
Save