[問題] FPGA 做AD顯示
我需要用FPGA做一個類似示波器的功能
用VGA將AD轉好的訊號傳到螢幕
想要用矩陣的方式 將AD轉換的值存成一維矩陣 在將矩陣的位置(X)與數值(Y)
當成VGA的座標輸出
但是用簡單的寫法測試一下
VGA會產生閃爍 寫法如下
將矩陣image填入i
always @( posedge ADB_DCO,posedge SW[16])
begin
if(SW[16]==1)
begin
i=0;
end
else
begin
if(i<=500)
image[i] <= i;
i=i+1'b1;
end
end
// 水平同步訊號
always@(posedge ADB_DCO, negedge RST_N) begin
if(!RST_N) begin
H_Cont <= 0;
vga_hs <= 1;
X <= 0;
end
else begin
if (H_Cont < H_TOTAL)
H_Cont <= H_Cont+1'b1;
else
H_Cont <= 0;
// Horizontal Sync
if(H_Cont == H_FRONT-1) // Front porch end
vga_hs <= 1'b0;
if(H_Cont == H_FRONT + H_SYNC -1) // Sync pulse end
vga_hs <= 1'b1;
// Current X
if(H_Cont >= H_BLANK)
X <= H_Cont-H_BLANK;
else
X <= 0;
end
end
// 垂直同步訊號
always@(posedge VGA_HS,negedge RST_N) begin
if(!RST_N) begin
V_Cont <= 0;
vga_vs <= 1;
Y <= 0;
end
else begin
if (V_Cont<V_TOTAL)
V_Cont <= V_Cont + 1'b1;
else
V_Cont <= 0;
// Vertical Sync
if (V_Cont == V_FRONT-1) // Front porch end
vga_vs <= 1'b0;
if (V_Cont == V_FRONT + V_SYNC-1) // Sync pulse end
vga_vs <= 1'b1;
// Current Y
if (V_Cont >= V_BLANK)
Y <= V_Cont-V_BLANK;
else
Y <= 0;
end
end
// VGA控制
always@(posedge ADB_DCO, negedge SW[16]) begin
if(SW[16]==0 )
begin
vga_r <=(X>=1 && X<=500 &&Y==image[i])?255:0;
vga_g <=(X>=1 && X<=500 &&Y==image[i])?255:0;
vga_b <=(X>=1 && X<=500 &&Y==image[i])?255:0;
end
end
這樣子會做出斜線的樣子 但是畫面會有一些雜點閃爍
一直想不出原因 所以還沒把ADC轉換的值讀入矩陣
有人可以幫忙解答嗎? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.126.41.70
→
01/12 19:04, , 1F
01/12 19:04, 1F
→
01/12 19:04, , 2F
01/12 19:04, 2F