forked from p_lusterinc_xsync/xsync_fpge
18 changed files with 612 additions and 278 deletions
-
64led_test.pds
-
38source/src/timecode/timecode_basesig_generator.v
-
179source/src/timecode/timecode_generator.v
-
232source/src/timecode/timecode_nextcode.v
-
118source/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