forked from p_lusterinc_xsync/xsync_fpge
18 changed files with 612 additions and 278 deletions
-
64led_test.pds
-
36source/src/timecode/timecode_basesig_generator.v
-
179source/src/timecode/timecode_generator.v
-
232source/src/timecode/timecode_nextcode.v
-
70source/src/timecode/timecode_serialization.v
-
51source/src/xsync_internal_generator.v
-
2source/src/xsync_internal_sub/internal_timecode_generator.v
-
63source/src/zutils/ztutils_timecode_next_code_v2.v
-
20source/src/zutils/zutils_genlock_clk_generator.v
-
2source/src/zutils/zutils_muti_debug_signal_gen.v
-
2source/src/zutils/zutils_pluse_generator.v
-
2source/src/zutils/zutils_pwm_generator.v
-
6source/src/zutils/zutils_pwm_generator_advanced.v
-
14source/src/zutils/zutils_smpte_timecode_clk_generator.v
-
2source/src/zutils/zutils_timecode_convert.v
-
2source/src/zutils/zutils_timecode_serial_data_gen.v
-
90source/test/test_timecode_generator.v
-
3source/test/test_top.v
@ -1,63 +0,0 @@ |
|||||
module ztutils_timecode_next_code ( |
|
||||
input [31:0] frameFormat, |
|
||||
input [63:0] timecode_now, |
|
||||
output [31:0] timecode_next |
|
||||
); |
|
||||
|
|
||||
|
|
||||
|
|
||||
// // timecode_next |
|
||||
// wire [7:0] frame; |
|
||||
// wire [7:0] sec; |
|
||||
// wire [7:0] min; |
|
||||
// wire [7:0] hour; |
|
||||
|
|
||||
// reg [7:0] next_frame; |
|
||||
// reg [7:0] next_sec; |
|
||||
// reg [7:0] next_min; |
|
||||
// reg [7:0] next_hour; |
|
||||
|
|
||||
// assign frame = timecode[7:0]; |
|
||||
// assign sec = timecode[15:8]; |
|
||||
// assign min = timecode[23:16]; |
|
||||
// assign hour = timecode[31:24]; |
|
||||
|
|
||||
// always @(*) begin |
|
||||
// if (hour == 23 && min == 59 && sec == 59 && frame == (frameNum - 1)) begin |
|
||||
// next_frame <= 0; |
|
||||
// next_sec <= 0; |
|
||||
// next_min <= 0; |
|
||||
// next_hour <= 0; |
|
||||
// end else if (min == 59 && sec == 59 && frame == (frameNum - 1)) begin |
|
||||
// next_frame <= 0; |
|
||||
// next_sec <= 0; |
|
||||
// next_min <= 0; |
|
||||
// next_hour <= hour + 1; |
|
||||
// end else if (sec == 59 && frame == (frameNum - 1)) begin |
|
||||
// if (drop && !(min == 49 || min == 39 || min == 29 || min == 19 || min == 9)) begin |
|
||||
// //丢帧模式 |
|
||||
// next_frame <= 2; |
|
||||
// next_sec <= 0; |
|
||||
// next_min <= min + 1; |
|
||||
// next_hour <= hour; |
|
||||
// end else begin |
|
||||
// //正常模式 |
|
||||
// next_frame <= 0; |
|
||||
// next_sec <= 0; |
|
||||
// next_min <= min + 1; |
|
||||
// next_hour <= hour; |
|
||||
// end |
|
||||
// end else if (frame == (frameNum - 1)) begin |
|
||||
// next_frame <= 0; |
|
||||
// next_sec <= sec + 1; |
|
||||
// next_min <= min; |
|
||||
// next_hour <= hour; |
|
||||
// end else begin |
|
||||
// next_frame <= frame + 1; |
|
||||
// next_sec <= sec; |
|
||||
// next_min <= min; |
|
||||
// next_hour <= hour; |
|
||||
// end |
|
||||
// end |
|
||||
|
|
||||
endmodule |
|
@ -0,0 +1,90 @@ |
|||||
|
`timescale 10ns / 10ns |
||||
|
module test_timecode_generator; |
||||
|
// module timecode_generator #( |
||||
|
// parameter SYS_CLOCK_FREQ = 10000000 |
||||
|
// ) ( |
||||
|
// input clk, //clock input |
||||
|
// input rst_n, //asynchronous reset input, low active |
||||
|
|
||||
|
// input [31:0] timecode_format, |
||||
|
|
||||
|
// input timecode0_wen, |
||||
|
// input [31:0] timecode0, |
||||
|
// input timecode1_wen, |
||||
|
// input [31:0] timecode1, |
||||
|
|
||||
|
// input en, |
||||
|
|
||||
|
// output wire out_timecode_serial_data, |
||||
|
// output wire out_trigger_sig, |
||||
|
// output wire [31:0] out_timecode0, |
||||
|
// output wire [31:0] out_timecode1 |
||||
|
// ) |
||||
|
|
||||
|
reg sys_clk; |
||||
|
reg rst_n; |
||||
|
|
||||
|
reg [31:0] timecode_format; |
||||
|
|
||||
|
reg timecode0_wen; |
||||
|
reg [31:0] timecode0; |
||||
|
reg timecode1_wen; |
||||
|
reg [31:0] timecode1; |
||||
|
|
||||
|
reg en; |
||||
|
|
||||
|
wire out_timecode_serial_data; |
||||
|
wire out_trigger_sig; |
||||
|
wire [31:0] out_timecode0; |
||||
|
wire [31:0] out_timecode1; |
||||
|
|
||||
|
timecode_generator #( |
||||
|
.SYS_CLOCK_FREQ(10000000) |
||||
|
) timecode_generator_inst ( |
||||
|
.clk(sys_clk), |
||||
|
.rst_n(rst_n), |
||||
|
|
||||
|
.timecode_format(timecode_format), |
||||
|
|
||||
|
.timecode0_wen(timecode0_wen), |
||||
|
.timecode0(timecode0), |
||||
|
.timecode1_wen(timecode1_wen), |
||||
|
.timecode1(timecode1), |
||||
|
|
||||
|
.en(en), |
||||
|
|
||||
|
.out_timecode_serial_data(out_timecode_serial_data), |
||||
|
.out_trigger_sig(out_trigger_sig), |
||||
|
.out_timecode0(out_timecode0), |
||||
|
.out_timecode1(out_timecode1) |
||||
|
); |
||||
|
|
||||
|
|
||||
|
localparam FPS2398Format = 0; |
||||
|
localparam FPS2400Format = 1; |
||||
|
localparam FPS2500Format = 2; |
||||
|
localparam FPS2997Format = 3; |
||||
|
localparam FPS2997DropFormat = 4; |
||||
|
localparam FPS3000Format = 5; |
||||
|
|
||||
|
initial begin |
||||
|
sys_clk = 0; |
||||
|
rst_n = 0; |
||||
|
en = 0; |
||||
|
timecode0_wen = 0; |
||||
|
timecode1_wen = 0; |
||||
|
timecode0 = 0; |
||||
|
timecode1 = 0; |
||||
|
timecode_format = FPS2398Format; |
||||
|
|
||||
|
#100; |
||||
|
rst_n = 1; |
||||
|
|
||||
|
#100; |
||||
|
en = 1; |
||||
|
|
||||
|
#100000000; |
||||
|
$stop; |
||||
|
end |
||||
|
always #5 sys_clk = ~sys_clk; // 50MHZ时钟 |
||||
|
endmodule |
Write
Preview
Loading…
Cancel
Save
Reference in new issue