mình đang làm đề tài hiển thị ảnh lên monitor thông qua VGA của kit DE2 mà ko biết làm thế nào. mình đọc tài liệu mà cũng chưa hiểu lắm. bạn nào đã làm rồi có thể hướng dẫn cho mình được không? thanks nhiều nhiều
Thông báo
Collapse
No announcement yet.
VGA trên DE2
Collapse
X
-
Nguyên văn bởi ruaconb52 Xem bài viếtmình đang làm đề tài hiển thị ảnh lên monitor thông qua VGA của kit DE2 mà ko biết làm thế nào. mình đọc tài liệu mà cũng chưa hiểu lắm. bạn nào đã làm rồi có thể hướng dẫn cho mình được không? thanks nhiều nhiều
Bạn có thể cho mình mail để tiện trao đổi không. Hoặc bạn liên lạc với mình qua email : a.nguyen.mh@gmail.com
Comment
-
mình có code này ko có lỗi nhưng gắn monitor thì ko chạy được. bạn nào phát hiện lỗi thì cho mình biết nha.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY vga IS
PORT (CLOCK_50 : IN std_logic; --50Mhz clock
KEY : IN std_logic_vector(3 downto 0); --RESET
VGA_B: OUT std_logic_vector(9 downto 0);
VGA_R: OUT std_logic_vector(9 downto 0);
VGA_G: OUT std_logic_vector(9 downto 0);
VGA_CLK : OUT std_logic;
VGA_BLANK :OUT std_logic; --active low
VGA_SYNC : OUT std_logic;
VGA_HS : OUT std_logic;
VGA_VS : OUT std_logic);
END vga;
ARCHITECTURE vg OF vga IS
SIGNAL line_fin : std_logic; --variable to determine if a line has finished drawing
SIGNAL line_count : integer; --variable for counting the amount of lines drawn
SIGNAL frame_fin : std_logic; --variable to determine if a frame had finished drawing
SIGNAL CLOCK_25 : std_logic; --25Mhz clock
CONSTANT P1 : integer := 24; --Front porch (horizontal)
CONSTANT P2 : integer := 48; --Back porch (horizontal)
CONSTANT HSYNC_TIME : integer := 95; -- H_Sync pulse lenght
CONSTANT V1 : integer := 11250; --Front porch (vertical)
CONSTANT V2 : integer := 25500; --Back porch (vertical)
CONSTANT VSYNC_TIME : integer := 1600; -- V_Sync pulse lenght
BEGIN
VGA_SYNC<= '0';
pixel_draw : PROCESS(CLOCK_25,KEY(0)) --for drawing pixels and generating blank pulses
VARIABLE hcount : INTEGER := 0;
VARIABLE vcount : INTEGER := 0;
BEGIN
IF KEY(0)= '0' THEN
hcount := 0;
vcount := 0;
line_fin <= '0';
frame_fin <= '0';
line_count <= 0;
VGA_BLANK <= '1';
ELSIF rising_edge(CLOCK_25) THEN
IF line_count < 480 THEN
IF hcount < 640 THEN
VGA_R <= "1111111111";--send pixel information each clock_cycle
VGA_B <= "0000000000";
VGA_G <= "0000000000";
VGA_BLANK <= '1';
hcount := hcount+1;
line_fin <= '0';
ELSIF hcount = 640 THEN
line_fin <= '1'; --line finished, pulse line_fin and start blank pulse
hcount := hcount+1;
VGA_BLANK <= '0';
ELSIF hcount >640 and hcount <= 640+P1+HSYNC_TIME+P2 THEN
hcount := hcount+1;--keep blank pulse low for a set amount of time
line_fin <= '0';
VGA_BLANK <= '0';
ELSE
hcount := 1; --reset counters and increment line_counter
line_count <= line_count+1;
END IF;
ELSIF line_count = 480 THEN
IF vcount < 1 THEN --frame is finished; pulse frame_fin and initiate vertical blank pulse
vcount := vcount+1;
VGA_BLANK <= '0';
frame_fin <= '1';
ELSIF vcount >= 1 and vcount < V1+V2+VSYNC_TIME THEN
vcount := vcount+1; --keep blank pulse low for a set amount of time
frame_fin <= '0';
VGA_BLANK <= '0';
ELSE
vcount := 0; -- reset counters and line_counter
VGA_BLANK <= '1';
line_count <= 0;
END IF;
END IF;
END IF;
END PROCESS;
horizontal_synchronisation : PROCESS(CLOCK_25,KEY(0))
VARIABLE hsync_counter : INTEGER := 0;
VARIABLE hsync_started : INTEGER := 0;
BEGIN
IF KEY(0)= '0' THEN
VGA_HS <= '1';
hsync_counter := 0;
hsync_started := 0;
ELSIF rising_edge(CLOCK_25) THEN
IF line_fin = '1' or hsync_started = 1 THEN
hsync_started:= 1;
IF hsync_counter <= P1 THEN
hsync_counter := hsync_counter+1;--hsync stays high during front porch
VGA_HS <= '1';
ELSIF hsync_counter >= P1-1 and hsync_counter <= HSYNC_TIME+P1 THEN
hsync_counter := hsync_counter+1;--hsync activated
VGA_HS <= '0';
ELSIF hsync_counter >= HSYNC_TIME+P1-1 and hsync_counter < HSYNC_TIME+P1+P2 THEN
hsync_counter := hsync_counter+1;--hsync stays high during back porch
VGA_HS <= '1';
ELSE
hsync_counter := 0;--reset variables and counters
VGA_HS <= '1';
hsync_started := 0;
END IF;
ELSE
VGA_HS <= '1';
END IF;
END IF;
END PROCESS;
vertical_synchronisation : PROCESS(CLOCK_25,KEY(0))
VARIABLE vsync_counter : INTEGER := 0;
VARIABLE vsync_started : INTEGER := 0;
BEGIN
IF KEY(0) = '0' THEN
VGA_VS <= '1';
vsync_counter := 0;
vsync_started := 0;
ELSIF rising_edge(CLOCK_25) THEN
IF frame_fin = '1' or vsync_started = 1 THEN
vsync_started := 1;
IF vsync_counter < V1-1 THEN
vsync_counter := vsync_counter+1;
VGA_VS <= '1';
ELSIF vsync_counter >= V1-1 and vsync_counter < VSYNC_TIME+V1-1 THEN
vsync_counter := vsync_counter+1;
VGA_VS <= '0';
ELSIF vsync_counter >= VSYNC_TIME+V1-1 and vsync_counter < VSYNC_TIME+V1+V2 THEN
vsync_counter := vsync_counter+1;
VGA_VS <= '1';
ELSE
vsync_counter := 0;
VGA_VS <= '1';
vsync_started := 0;
END IF;
ELSE
VGA_VS <= '1';
END IF;
END IF;
END PROCESS;
vga_clk_gen : PROCESS(CLOCK_50,KEY(0))--devides 50MHz clock in 2, making it a 25MHz clock
VARIABLE count : INTEGER := 0;
BEGIN
IF KEY(0)= '0' THEN
CLOCK_25 <= '0';
VGA_CLK <= '0';
count := 0;
ELSIF rising_edge(CLOCK_50) THEN
IF count = 0 THEN
CLOCK_25 <= '1'; --1 period of 50MHz high
VGA_CLK <= '1';
count := 1;
ELSIF count = 1 THEN
CLOCK_25 <= '0'; --1 period of 50MHz low
VGA_CLK <= '0';
count := 0;
END IF;
END IF;
END PROCESS;
END vg;
Comment
-
mình có code này ko có lỗi nhưng gắn monitor thì ko chạy được. bạn nào phát hiện lỗi thì cho mình biết nha.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY vga IS
PORT (CLOCK_50 : IN std_logic; --50Mhz clock
KEY : IN std_logic_vector(3 downto 0); --RESET
VGA_B: OUT std_logic_vector(9 downto 0);
VGA_R: OUT std_logic_vector(9 downto 0);
VGA_G: OUT std_logic_vector(9 downto 0);
VGA_CLK : OUT std_logic;
VGA_BLANK :OUT std_logic; --active low
VGA_SYNC : OUT std_logic;
VGA_HS : OUT std_logic;
VGA_VS : OUT std_logic);
END vga;
ARCHITECTURE vg OF vga IS
SIGNAL line_fin : std_logic; --variable to determine if a line has finished drawing
SIGNAL line_count : integer; --variable for counting the amount of lines drawn
SIGNAL frame_fin : std_logic; --variable to determine if a frame had finished drawing
SIGNAL CLOCK_25 : std_logic; --25Mhz clock
CONSTANT P1 : integer := 24; --Front porch (horizontal)
CONSTANT P2 : integer := 48; --Back porch (horizontal)
CONSTANT HSYNC_TIME : integer := 95; -- H_Sync pulse lenght
CONSTANT V1 : integer := 11250; --Front porch (vertical)
CONSTANT V2 : integer := 25500; --Back porch (vertical)
CONSTANT VSYNC_TIME : integer := 1600; -- V_Sync pulse lenght
BEGIN
VGA_SYNC<= '0';
pixel_draw : PROCESS(CLOCK_25,KEY(0)) --for drawing pixels and generating blank pulses
VARIABLE hcount : INTEGER := 0;
VARIABLE vcount : INTEGER := 0;
BEGIN
IF KEY(0)= '0' THEN
hcount := 0;
vcount := 0;
line_fin <= '0';
frame_fin <= '0';
line_count <= 0;
VGA_BLANK <= '1';
ELSIF rising_edge(CLOCK_25) THEN
IF line_count < 480 THEN
IF hcount < 640 THEN
VGA_R <= "1111111111";--send pixel information each clock_cycle
VGA_B <= "0000000000";
VGA_G <= "0000000000";
VGA_BLANK <= '1';
hcount := hcount+1;
line_fin <= '0';
ELSIF hcount = 640 THEN
line_fin <= '1'; --line finished, pulse line_fin and start blank pulse
hcount := hcount+1;
VGA_BLANK <= '0';
ELSIF hcount >640 and hcount <= 640+P1+HSYNC_TIME+P2 THEN
hcount := hcount+1;--keep blank pulse low for a set amount of time
line_fin <= '0';
VGA_BLANK <= '0';
ELSE
hcount := 1; --reset counters and increment line_counter
line_count <= line_count+1;
END IF;
ELSIF line_count = 480 THEN
IF vcount < 1 THEN --frame is finished; pulse frame_fin and initiate vertical blank pulse
vcount := vcount+1;
VGA_BLANK <= '0';
frame_fin <= '1';
ELSIF vcount >= 1 and vcount < V1+V2+VSYNC_TIME THEN
vcount := vcount+1; --keep blank pulse low for a set amount of time
frame_fin <= '0';
VGA_BLANK <= '0';
ELSE
vcount := 0; -- reset counters and line_counter
VGA_BLANK <= '1';
line_count <= 0;
END IF;
END IF;
END IF;
END PROCESS;
horizontal_synchronisation : PROCESS(CLOCK_25,KEY(0))
VARIABLE hsync_counter : INTEGER := 0;
VARIABLE hsync_started : INTEGER := 0;
BEGIN
IF KEY(0)= '0' THEN
VGA_HS <= '1';
hsync_counter := 0;
hsync_started := 0;
ELSIF rising_edge(CLOCK_25) THEN
IF line_fin = '1' or hsync_started = 1 THEN
hsync_started:= 1;
IF hsync_counter <= P1 THEN
hsync_counter := hsync_counter+1;--hsync stays high during front porch
VGA_HS <= '1';
ELSIF hsync_counter >= P1-1 and hsync_counter <= HSYNC_TIME+P1 THEN
hsync_counter := hsync_counter+1;--hsync activated
VGA_HS <= '0';
ELSIF hsync_counter >= HSYNC_TIME+P1-1 and hsync_counter < HSYNC_TIME+P1+P2 THEN
hsync_counter := hsync_counter+1;--hsync stays high during back porch
VGA_HS <= '1';
ELSE
hsync_counter := 0;--reset variables and counters
VGA_HS <= '1';
hsync_started := 0;
END IF;
ELSE
VGA_HS <= '1';
END IF;
END IF;
END PROCESS;
vertical_synchronisation : PROCESS(CLOCK_25,KEY(0))
VARIABLE vsync_counter : INTEGER := 0;
VARIABLE vsync_started : INTEGER := 0;
BEGIN
IF KEY(0) = '0' THEN
VGA_VS <= '1';
vsync_counter := 0;
vsync_started := 0;
ELSIF rising_edge(CLOCK_25) THEN
IF frame_fin = '1' or vsync_started = 1 THEN
vsync_started := 1;
IF vsync_counter < V1-1 THEN
vsync_counter := vsync_counter+1;
VGA_VS <= '1';
ELSIF vsync_counter >= V1-1 and vsync_counter < VSYNC_TIME+V1-1 THEN
vsync_counter := vsync_counter+1;
VGA_VS <= '0';
ELSIF vsync_counter >= VSYNC_TIME+V1-1 and vsync_counter < VSYNC_TIME+V1+V2 THEN
vsync_counter := vsync_counter+1;
VGA_VS <= '1';
ELSE
vsync_counter := 0;
VGA_VS <= '1';
vsync_started := 0;
END IF;
ELSE
VGA_VS <= '1';
END IF;
END IF;
END PROCESS;
vga_clk_gen : PROCESS(CLOCK_50,KEY(0))--devides 50MHz clock in 2, making it a 25MHz clock
VARIABLE count : INTEGER := 0;
BEGIN
IF KEY(0)= '0' THEN
CLOCK_25 <= '0';
VGA_CLK <= '0';
count := 0;
ELSIF rising_edge(CLOCK_50) THEN
IF count = 0 THEN
CLOCK_25 <= '1'; --1 period of 50MHz high
VGA_CLK <= '1';
count := 1;
ELSIF count = 1 THEN
CLOCK_25 <= '0'; --1 period of 50MHz low
VGA_CLK <= '0';
count := 0;
END IF;
END IF;
END PROCESS;
END vg;
Comment
-
Hi ruacon52,
Khi bạn chạy trên KIT DE2, bạn có để ý đèn màng hình không? Thông thường nếu nó chớp tắt (Màng hình VGA, không phải LCD nha) thì phần đồng bộ có vấn đề. Trên đĩa DE2 system (đi kèm với KIT) có một số phần demo liên quan đến VGA (Không nhớ rõ là viết bằng VHDL hay Verilog HDL), bạn có thể tham khảo. Còn thông số để setup cho VGA thì bạn có thể tham khảo những trang web mà bạn ToanXT đã đưa ra trong http://dientuvietnam.net/forums/showthread.php?t=29283.
Chúc bạn thành công.
Comment
-
Mình cũng đang làm đề tài này nhưng chỉ dừng ở mức mới giao tiếp được với monitor.Hiện nay mình đang muốn hiển thị 1 ảnh RGB 256x256x24 từ SRAM lên VGA nhưng chưa được.Lúc hiển thị thì chỉ hiện ra được 1 khung hình 256x256 nhưng toàn nhiễu.Mình thực hiện theo cách sau,sai chỗ nào xin mọi người chỉ giúp.
-Một pixel được lưu bằng 2 words (16bit) của SRAM.words có địa chỉ chẵn sẽ lưu giá trị của R và G,byte có địa chỉ lẻ lưu giá trị của B dưới dạn 00B.
-Địa chỉ truy xuất Sram được cập nhật liên tục bằng xung clock 50mhz,dựa vào tọa độ của pixel cần hiển thị.Dùng thêm 1 clk 25mhz để xác định là địa chỉ lẻ hoặc địa chỉ chẵn.
Comment
-
Làm vậy hình bị nhiễu là đúng rồi. Vì yêu cầu bạn phải xuất đồng thời 24 bit màu. Chứ không phải xuất tùng màu như bạn. Mà SRAM thì chỉ có 16 bit. Vậy sao bây giờ???
Bạn dùng SRAM là đúng. Cái này sẽ hiển thị tốt cho ảnh 16 bit màu. Để hiển thị ảnh 24 bit màu bạn có thể kết hợp hai bộ RAM. Một bộ RAM có trong FPGA và một là SRAM.
SRAM chứa dữ liệu của RG.
FPGA RAM chứa dữ liệu B. (hoặc thay đổi khác đi chút cũng được). Vậy thì có thể xuất đồng thời cả ba màu rồi.
Cái này năm ngoái tôi làm rồi. Chạy good lắm. Nhưng hình như chỉ làm ở kích thước 100x100 thôi. Vì giớ hạn của bộ RAM trong FPGA.
Thân chào.
Comment
-
bạn phuongnhoc làm rồi có thể share chương trình cho mình được không? mình cũng đang làm về hiển thị ảnh chứa trong sdram ra màn hình. giờ vẫn chưa biết quy trình làm như thế nào? bạn có thể hướng dẫn kĩ hơn chút được không?
địa chỉ mail của mình là ngobaviet@gmail.com.
thanks bạn nhiều
Comment
-
Oh`. Bạn làm hiển thị ảnh tư` SDRAM à. Đã giao tiếp được với SDRAM chưa.
Sorry mình không thể cho bạn code được. Nếu bạn cần hướng dẫn làm đề tài LV này thì có thể liên hệ với mình. Mình đã làm thành công đề tài
+ Trình diễn ảnh từ SD_card,.
+ Xử lý ảnh (các phương pháp lọc ảnh)". Chuẩn ảnh 24 bit màu.
+ Game with DE2 KIT
Nếu bạn nào cần hướng dẫn lv có thể liên hệ mình qua email: nguyentrungkien31111@yahoo.com
or 090 707 1167
Comment
-
Hi,
Dùng SRAM 256x16bit trên DE2 thì bạn cho chạy 50MHz. Do 1 pixel phải được xác định trong 1 chu kỳ 25MHz tức là 2 lần chu kỳ 50MHz. Như vậy 1 xung clock 25MHz thì bạn phải có 24bit màu (đúng hơn là 10x3 = 30 bit) => 1pixel phải dùng 2words <=> 32 bits hay truy xuất SRAM 2 lần và sử dụng chế độ 16bits. Như vậy màng hình rộng nhất có thể là 256x512 (RGB) (Còn vời ảnh mức xám thì đơn giản hơn nhiều vì R=G=B, như thế bạn sẽ giảm dụng lượng ô nhớ xuống 3 lần hay bạn có thể lưu ảnh lớn hơn). (Thật ra có thể rộng hơn chút nữa nhưng không cần thiết phải làm như thế). Cái mình nói trên đây chỉ là ảnh tỉnh thôi nha! Còn với Video thì làm cách khác. Nếu bạn muốn màng hình có độ phân giải cao hơn thì bạn có thể dùng SDRAM nhưng như thế bạn phải làm SDRAM Controller để giao tiếp với SDRAM, cái này thì không khó nhưng sẽ làm bạn mất thời gian đó.
Hi vong những thông tin này giúp ích cho các bạn muốn hiển thị ảnh tỉnh trên VGA dùng kit De2.
Comment
-
Làm như Danbeo85 thì mình chưa thử. Vì sợ các lý do sau:
+ Cần chuẩn bị sẳn 24 bit màu trước khi có cạnh lên xung Clock để đưa vào VGA. Vì ngay cạnh lên của xung Clock 24bit dữ liệu sẽ được chuyển vào thanh ghi đệm của VGA chip.
+ 24 bit cần được cấp đồng thời. Do vậy bạn cần có cách thanh ghi để chốt dữ liệu cho 2 byte cao và hai byte thấp.
+ Tính toán timming và latency cẩn thận.
=> có vẻ dùng tần số 100Mhz sẽ dễ điều khiẻn hơn vì có dư thời gian cho việc xuất dữ liệu.
Chỉ là lý thuyết thôi. Mình chưa thực hiện nên không chắc.
P/s Danbeo85: Hồi xưa làm SDRAM controller chưa vậy. Chỉ cho mình hướng giải quyết với. Sắp tậu được cái kit DE2 rồi.
Comment
-
SDR SDRAM Controller (Mình không đề cập đến DDR nha!)là một đề tài khác bạn ơi! Nhưng thật ra nó không quá khó để làm.
1) Bạn tìm hiểu cấu tạo DRAM và SDRAM nói chung để biết được cái khác biệt với SRAM là gì!
2) Tham khảo chuẩn JDEC về SDRAM (nếu không thể tìm được thì bạn có thể xem datasheet của các hãng làm SDRAM như Micron, Samsung, ... Nếu bạn có tài datasheet của SDRAM trên KIT DE2 thì cũng OK) để biết:
a) Những chân dùng để giao tiếp với SDRAM
b) Sơ đồ máy trạng thái của SDRAM
c) Các độ trễ cần thiết giữa các lệnh
3) Khi mô phỏng bộ điều khiễn bạn nên dùng SDRAM model của MICRON để mô phỏng nha vì cái này miễn phí và không bị mã hóa (SAMSUNG bị mã hóa). Các model sẽ đi cùng datasheet của SDRAM. Một lưu ý nhỏ là các model này đã kèm độ trễ nên khi mô phỏng chức năng của bộ điều khiển, bạn nhớ bỏ qua các báo lỗi về vấn đề này, bạn chỉ nên để ý đến các báo lỗi về chức năng thôi.
4) Tổng hợp và mô phỏng timing (mô phỏng có độ trễ). Tại thời điểm này thì sẽ không còn bất cứ lỗi nào được phép xảy ra nha!
5) Lưu ý: Bạn nên dùng một chuẩn giao tiếp thông dụng để viết lớp vỏ ngoài cho bộ điều khiển (Avalon Memory Map, AMBA AHB, ...) như thế sẽ thuận tiện trong việc gắng bộ điều khiển vào hệ thống.
Hi vọng những điều trên sẽ có ích cho bạn. Chúc bạn thành công!
Comment
Bài viết mới nhất
Collapse
-
bởi nhathung1101Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu.
Cho bạn 3 ngày, không là sẽ xóa.-
Channel: Đặt hàng
Hôm qua, 22:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi nhathung1101Schmit Trigger là chuẩn với điều kiện rise > 0,8V.
Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 21:57 -
-
bởi trungautMình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
-
Channel: Đặt hàng
Hôm qua, 14:27 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
21-12-2024, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
Comment