Skip to content
This repository was archived by the owner on Sep 4, 2023. It is now read-only.

Commit ad8e62e

Browse files
committed
Update sys.
1 parent 502923c commit ad8e62e

File tree

5 files changed

+320
-29
lines changed

5 files changed

+320
-29
lines changed

sys/hps_io.sv

+8
Original file line numberDiff line numberDiff line change
@@ -891,22 +891,28 @@ always @(posedge clk_sys) begin
891891
11: dout <= vid_pix[31:16];
892892
12: dout <= vid_vtime_hdmi[15:0];
893893
13: dout <= vid_vtime_hdmi[31:16];
894+
14: dout <= vid_ccnt[15:0];
895+
15: dout <= vid_ccnt[31:16];
894896
default dout <= 0;
895897
endcase
896898
end
897899

898900
reg [31:0] vid_hcnt = 0;
899901
reg [31:0] vid_vcnt = 0;
902+
reg [31:0] vid_ccnt = 0;
900903
reg [7:0] vid_nres = 0;
901904
reg [1:0] vid_int = 0;
902905

903906
always @(posedge clk_vid) begin
904907
integer hcnt;
905908
integer vcnt;
909+
integer ccnt;
906910
reg old_vs= 0, old_de = 0, old_vmode = 0;
907911
reg [3:0] resto = 0;
908912
reg calch = 0;
909913

914+
if(calch & de) ccnt <= ccnt + 1;
915+
910916
if(ce_pix) begin
911917
old_vs <= vs;
912918
old_de <= de;
@@ -927,9 +933,11 @@ always @(posedge clk_vid) begin
927933
if(&resto) vid_nres <= vid_nres + 1'd1;
928934
vid_hcnt <= hcnt;
929935
vid_vcnt <= vcnt;
936+
vid_ccnt <= ccnt;
930937
end
931938
vcnt <= 0;
932939
hcnt <= 0;
940+
ccnt <= 0;
933941
calch <= 1;
934942
end
935943
end

sys/ltc2308.sv

+13-13
Original file line numberDiff line numberDiff line change
@@ -102,19 +102,19 @@ end
102102

103103
endmodule
104104

105-
module ltc2308_tape #(parameter HIST_LOW = 16, HIST_HIGH = 64, ADC_RATE = 48000, CLK_RATE = 50000000)
105+
module ltc2308_tape #(parameter HIST_LOW = 16, HIST_HIGH = 64, ADC_RATE = 48000, CLK_RATE = 50000000, NUM_CH = 1)
106106
(
107-
input reset,
108-
input clk,
109-
110-
inout [3:0] ADC_BUS,
111-
output reg dout,
112-
output active
107+
input reset,
108+
input clk,
109+
110+
inout [3:0] ADC_BUS,
111+
output reg dout,
112+
output active,
113+
output adc_sync,
114+
output [(NUM_CH*12)-1:0] adc_data
113115
);
114116

115-
wire [11:0] adc_data;
116-
wire adc_sync;
117-
ltc2308 #(1, ADC_RATE, CLK_RATE) adc
117+
ltc2308 #(NUM_CH, ADC_RATE, CLK_RATE) adc
118118
(
119119
.reset(reset),
120120
.clk(clk),
@@ -133,8 +133,8 @@ always @(posedge clk) begin
133133
data1 <= data2;
134134
data2 <= data3;
135135
data3 <= data4;
136-
data4 <= adc_data;
137-
136+
data4 <= adc_data[11:0];
137+
138138
sum <= data1+data2+data3+data4;
139139

140140
if(sum[13:2]<HIST_LOW) dout <= 0;
@@ -148,7 +148,7 @@ reg [1:0] act;
148148
always @(posedge clk) begin
149149
reg [31:0] onesec;
150150
reg old_dout;
151-
151+
152152
onesec <= onesec + 1;
153153
if(onesec>CLK_RATE) begin
154154
onesec <= 0;

sys/sys.qip

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ set_global_assignment -name SYSTEMVERILOG_FILE [file join $::quartus(qip_path) v
1616
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) arcade_video.v ]
1717
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) osd.v ]
1818
set_global_assignment -name SYSTEMVERILOG_FILE [file join $::quartus(qip_path) vga_out.sv ]
19+
set_global_assignment -name SYSTEMVERILOG_FILE [file join $::quartus(qip_path) yc_out.sv ]
1920
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) i2c.v ]
2021
set_global_assignment -name SYSTEMVERILOG_FILE [file join $::quartus(qip_path) alsa.sv ]
2122
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) i2s.v ]

sys/sys_top.v

+68-16
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,18 @@ always@(posedge clk_sys) begin
475475
7: io_dout_sys <= FB_STRIDE;
476476
endcase
477477
end
478+
`endif
479+
`ifndef MISTER_DISABLE_YC
480+
if(cmd == 'h41) begin
481+
case(cnt[3:0])
482+
0: {pal_en,cvbs,yc_en} <= io_din[2:0];
483+
1: PhaseInc[15:0] <= io_din;
484+
2: PhaseInc[31:16] <= io_din;
485+
3: PhaseInc[39:32] <= io_din[7:0];
486+
4: ColorBurst_Range[15:0] <= io_din;
487+
5: ColorBurst_Range[16] <= io_din[0];
488+
endcase
489+
end
478490
`endif
479491
end
480492
end
@@ -1152,6 +1164,9 @@ csync csync_hdmi(clk_hdmi, hdmi_hs_osd, hdmi_vs_osd, hdmi_cs_osd);
11521164

11531165
reg [23:0] dv_data;
11541166
reg dv_hs, dv_vs, dv_de;
1167+
wire [23:0] dv_data_osd;
1168+
wire dv_hs_osd, dv_vs_osd, dv_cs_osd;
1169+
11551170
always @(posedge clk_vid) begin
11561171
reg [23:0] dv_d1, dv_d2;
11571172
reg dv_de1, dv_de2, dv_hs1, dv_hs2, dv_vs1, dv_vs2;
@@ -1161,29 +1176,29 @@ always @(posedge clk_vid) begin
11611176
reg [3:0] hss;
11621177

11631178
if(ce_pix) begin
1164-
hss <= (hss << 1) | vga_hs_osd;
1179+
hss <= (hss << 1) | dv_hs_osd;
11651180

1166-
old_hs <= vga_hs_osd;
1167-
if(~old_hs && vga_hs_osd) begin
1168-
old_vs <= vga_vs_osd;
1181+
old_hs <= dv_hs_osd;
1182+
if(~old_hs && dv_hs_osd) begin
1183+
old_vs <= dv_vs_osd;
11691184
if(~&vcnt) vcnt <= vcnt + 1'd1;
1170-
if(~old_vs & vga_vs_osd) begin
1185+
if(~old_vs & dv_vs_osd) begin
11711186
if (vcnt != vcnt_ll || vcnt < vcnt_l) vsz <= vcnt;
11721187
vcnt_l <= vcnt;
11731188
vcnt_ll <= vcnt_l;
11741189
end
1175-
if(old_vs & ~vga_vs_osd) vcnt <= 0;
1190+
if(old_vs & ~dv_vs_osd) vcnt <= 0;
11761191

11771192
if(vcnt == 1) vde <= 1;
11781193
if(vcnt == vsz - 3) vde <= 0;
11791194
end
11801195

1181-
dv_de1 <= !{hss,vga_hs_osd} && vde;
1182-
dv_hs1 <= csync_en ? vga_cs_osd : vga_hs_osd;
1183-
dv_vs1 <= vga_vs_osd;
1196+
dv_de1 <= !{hss,dv_hs_osd} && vde;
1197+
dv_hs1 <= csync_en ? dv_cs_osd : dv_hs_osd;
1198+
dv_vs1 <= dv_vs_osd;
11841199
end
11851200

1186-
dv_d1 <= vga_data_osd;
1201+
dv_d1 <= dv_data_osd;
11871202
dv_d2 <= dv_d1;
11881203
dv_de2 <= dv_de1;
11891204
dv_hs2 <= dv_hs1;
@@ -1195,6 +1210,12 @@ always @(posedge clk_vid) begin
11951210
dv_vs <= dv_vs2;
11961211
end
11971212

1213+
`ifndef MISTER_DISABLE_YC
1214+
assign {dv_data_osd, dv_hs_osd, dv_vs_osd, dv_cs_osd } = ~yc_en ? {vga_data_osd, vga_hs_osd, vga_vs_osd, vga_cs_osd } : {yc_o, yc_hs, yc_vs, yc_cs };
1215+
`else
1216+
assign {dv_data_osd, dv_hs_osd, dv_vs_osd, dv_cs_osd } = {vga_data_osd, vga_hs_osd, vga_vs_osd, vga_cs_osd };
1217+
`endif
1218+
11981219
wire hdmi_tx_clk;
11991220
`ifndef MISTER_DEBUG_NOHDMI
12001221
cyclonev_clkselect hdmi_clk_sw
@@ -1330,21 +1351,52 @@ csync csync_vga(clk_vid, vga_hs_osd, vga_vs_osd, vga_cs_osd);
13301351
.csync_o(vgas_cs)
13311352
);
13321353

1333-
wire [23:0] vga_o;
1334-
wire vga_hs, vga_vs, vga_cs;
1354+
wire [23:0] vga_o, vga_o_t;
1355+
wire vga_hs, vga_vs, vga_cs, vga_hs_t, vga_vs_t, vga_cs_t;
13351356
vga_out vga_out
13361357
(
13371358
.clk(clk_vid),
13381359
.ypbpr_en(ypbpr_en),
13391360
.hsync(vga_hs_osd),
13401361
.vsync(vga_vs_osd),
13411362
.csync(vga_cs_osd),
1342-
.dout(vga_o),
1363+
.dout(vga_o_t),
1364+
.din(vga_data_osd),
1365+
.hsync_o(vga_hs_t),
1366+
.vsync_o(vga_vs_t),
1367+
.csync_o(vga_cs_t)
1368+
);
1369+
1370+
`ifndef MISTER_DISABLE_YC
1371+
reg pal_en;
1372+
reg yc_en;
1373+
reg cvbs;
1374+
reg [16:0] ColorBurst_Range;
1375+
reg [39:0] PhaseInc;
1376+
wire [23:0] yc_o;
1377+
wire yc_hs, yc_vs, yc_cs;
1378+
1379+
yc_out yc_out
1380+
(
1381+
.clk(clk_vid),
1382+
.PAL_EN(pal_en),
1383+
.CVBS(cvbs),
1384+
.PHASE_INC(PhaseInc),
1385+
.COLORBURST_RANGE(ColorBurst_Range),
1386+
.hsync(vga_hs_osd),
1387+
.vsync(vga_vs_osd),
1388+
.csync(vga_cs_osd),
1389+
.dout(yc_o),
13431390
.din(vga_data_osd),
1344-
.hsync_o(vga_hs),
1345-
.vsync_o(vga_vs),
1346-
.csync_o(vga_cs)
1391+
.hsync_o(yc_hs),
1392+
.vsync_o(yc_vs),
1393+
.csync_o(yc_cs)
13471394
);
1395+
1396+
assign {vga_o, vga_hs, vga_vs, vga_cs } = ~yc_en ? {vga_o_t, vga_hs_t, vga_vs_t, vga_cs_t } : {yc_o, yc_hs, yc_vs, yc_cs };
1397+
`else
1398+
assign {vga_o, vga_hs, vga_vs, vga_cs } = {vga_o_t, vga_hs_t, vga_vs_t, vga_cs_t } ;
1399+
`endif
13481400

13491401
wire cs1 = (vga_fb | vga_scaler) ? vgas_cs : vga_cs;
13501402

0 commit comments

Comments
 (0)