แƒ›แƒ”แƒแƒ แƒ” HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ Raspberry Pi3-แƒ–แƒ” DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—


แƒแƒ› แƒ•แƒ˜แƒ“แƒ”แƒแƒจแƒ˜ แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ: Raspberry Pi3 แƒ“แƒแƒคแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒก GPIO แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒแƒ แƒ˜แƒก FPGA แƒ“แƒแƒคแƒ Mars Rover2rpi (Cyclone IV), แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜. แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Raspberry Pi3-แƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ HDMI แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ”แƒ แƒ—แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ  แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ”แƒก.

แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒš Raspberry Pi3 แƒ“แƒแƒคแƒแƒก แƒแƒฅแƒ•แƒก GPIO แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—แƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ”แƒ‘แƒ˜: แƒกแƒ”แƒœแƒกแƒแƒ แƒ”แƒ‘แƒ˜, LED-แƒ”แƒ‘แƒ˜, แƒกแƒขแƒ”แƒžแƒ”แƒ  แƒซแƒ แƒแƒ•แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒฎแƒ•แƒ. แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ–แƒ” แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒžแƒ˜แƒœแƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ–แƒ”. GPIO ALT2 แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ’แƒแƒ“แƒแƒ แƒ—แƒแƒ— แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜ DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜, แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ”แƒ‘แƒ˜ VGA แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก DPI-แƒ˜แƒ— แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒ—แƒฃแƒ›แƒชแƒ, แƒฏแƒ”แƒ  แƒ”แƒ แƒ—แƒ˜, VGA แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒแƒฆแƒแƒ  แƒแƒ แƒ˜แƒก แƒ˜แƒกแƒ”แƒ—แƒ˜แƒ•แƒ” แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช HDMI แƒ“แƒ แƒ›แƒ”แƒแƒ แƒ”แƒช, แƒชแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜ แƒกแƒฃแƒš แƒฃแƒคแƒ แƒ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ˜แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒแƒœแƒแƒšแƒแƒ’แƒฃแƒ แƒ˜. แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, DAC แƒแƒกแƒ”แƒ— VGA แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒคแƒ”แƒ‘แƒ–แƒ” แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒ–แƒแƒ“แƒ“แƒ”แƒ‘แƒ R-2-R แƒฏแƒแƒญแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ“แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒแƒ แƒแƒฃแƒ›แƒ”แƒขแƒ”แƒก 6 แƒ‘แƒ˜แƒขแƒ˜ แƒ—แƒ˜แƒ—แƒ แƒคแƒ”แƒ แƒจแƒ˜.

ALT2 แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜, GPIO แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒžแƒ˜แƒœแƒ”แƒ‘แƒก แƒแƒฅแƒ•แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ:

แƒ›แƒ”แƒแƒ แƒ” HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ Raspberry Pi3-แƒ–แƒ” DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒแƒฅ แƒ›แƒ” แƒ’แƒแƒ•แƒแƒคแƒ”แƒ แƒแƒ“แƒ” แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก RGB แƒฅแƒ˜แƒœแƒซแƒ˜แƒกแƒ—แƒแƒ•แƒ”แƒ‘แƒ˜ แƒฌแƒ˜แƒ—แƒ”แƒšแƒ˜, แƒ›แƒฌแƒ•แƒแƒœแƒ” แƒ“แƒ แƒšแƒฃแƒ แƒฏแƒ˜, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“. แƒกแƒฎแƒ•แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒ V-SYNC แƒ“แƒ H-SYNC แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜, แƒแƒกแƒ”แƒ•แƒ” CLK. CLK แƒกแƒแƒแƒ—แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ” แƒแƒ แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”, แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ–แƒ”; แƒ”แƒก แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒฉแƒ”แƒฃแƒš แƒ•แƒ˜แƒ“แƒ”แƒ แƒ แƒ”แƒŸแƒ˜แƒ›แƒ–แƒ”.

แƒชแƒ˜แƒคแƒ แƒฃแƒšแƒ˜ HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฆแƒแƒ— แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒก DPI แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒงแƒ•แƒแƒœแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ HDMI แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒแƒ“. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒ แƒ™แƒ•แƒ”แƒ•แƒ, Mars Rover2rpi แƒ“แƒแƒคแƒ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒแƒ› แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, แƒแƒ› แƒ“แƒแƒคแƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒแƒ“แƒแƒžแƒขแƒ”แƒ แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

แƒ›แƒ”แƒแƒ แƒ” HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ Raspberry Pi3-แƒ–แƒ” DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒ”แƒก แƒ“แƒแƒคแƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ GPIO แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ–แƒ แƒ“แƒ”แƒšแƒแƒ“ แƒ“แƒ แƒ›แƒ”แƒขแƒ˜ แƒžแƒ”แƒ แƒ˜แƒคแƒ”แƒ แƒ˜แƒฃแƒšแƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒŸแƒแƒšแƒแƒก แƒ“แƒแƒกแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒแƒ›แƒแƒ•แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒแƒ› แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒ— 4 GPIO แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ JTAG แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ—แƒ Raspberry-แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒก FPGA firmware แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ FPGA-แƒจแƒ˜. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ”แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜ แƒแƒ  แƒ›แƒแƒฌแƒงแƒแƒ‘แƒก; 4 DPI แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜ แƒ˜แƒจแƒšแƒ”แƒ‘แƒ. แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, แƒ“แƒแƒคแƒแƒ–แƒ” แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒกแƒแƒ•แƒแƒ แƒชแƒฎแƒšแƒ”แƒ‘แƒก แƒแƒฅแƒ•แƒก Raspberry-แƒ—แƒแƒœ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ˜ แƒžแƒ˜แƒœแƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒ›แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒแƒขแƒ แƒ˜แƒแƒšแƒ แƒ“แƒแƒคแƒ 90 แƒ’แƒ แƒแƒ“แƒฃแƒกแƒ˜แƒ— แƒ“แƒ แƒ›แƒแƒ˜แƒœแƒช แƒ“แƒแƒ•แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ แƒ˜แƒก แƒฉแƒ”แƒ›แƒก แƒŸแƒแƒšแƒแƒก:

แƒ›แƒ”แƒแƒ แƒ” HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ Raspberry Pi3-แƒ–แƒ” DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒ’แƒแƒ แƒ” JTAG แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ.

แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ แƒ˜แƒก แƒžแƒแƒขแƒแƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ. แƒงแƒ•แƒ”แƒšแƒ FPGA แƒžแƒ˜แƒœแƒ˜ แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒกแƒแƒแƒ—แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒ“. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒžแƒ˜แƒœแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒแƒ› แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก. แƒแƒกแƒ” แƒ แƒแƒ›, แƒแƒฅ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ› GPIO_0 CLK แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜ แƒแƒ  แƒแƒฆแƒฌแƒ”แƒ•แƒก FPGA แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ แƒแƒ’แƒแƒ แƒช FPGA แƒกแƒแƒแƒ—แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ. แƒแƒ›แƒ˜แƒขแƒแƒ› แƒจแƒแƒ แƒคแƒ–แƒ” แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ•แƒ—แƒฃแƒšแƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ. แƒ›แƒ” แƒ•แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘ GPIO_0-แƒก แƒ“แƒ แƒ“แƒแƒคแƒ˜แƒก KEY[1] แƒกแƒ˜แƒ’แƒœแƒแƒšแƒก:

แƒ›แƒ”แƒแƒ แƒ” HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ Raspberry Pi3-แƒ–แƒ” DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒแƒฎแƒšแƒ แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ— แƒชแƒแƒขแƒแƒก FPGA แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. HDMI แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ” แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ”แƒ‘แƒ˜. แƒ—แƒฃ แƒ“แƒแƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒ— HDMI แƒ™แƒแƒœแƒ”แƒฅแƒขแƒแƒ แƒ˜แƒก แƒžแƒ˜แƒœแƒ˜แƒœแƒ’แƒก, แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› RGB แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜ แƒแƒฎแƒšแƒ แƒกแƒ”แƒ แƒ˜แƒฃแƒšแƒ˜ แƒ“แƒ˜แƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ”แƒ‘แƒ˜แƒ:

แƒ›แƒ”แƒแƒ แƒ” HDMI แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ Raspberry Pi3-แƒ–แƒ” DPI แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ FPGA แƒ“แƒแƒคแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—

แƒ“แƒ˜แƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ”แƒ‘แƒ แƒซแƒแƒšแƒแƒ— แƒ’แƒแƒ“แƒแƒ›แƒชแƒ”แƒ› แƒฎแƒแƒ–แƒ–แƒ” แƒกแƒแƒ”แƒ แƒ—แƒ แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒฉแƒแƒ แƒ”แƒ•แƒแƒก. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒคแƒ”แƒ แƒแƒ“แƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ แƒ•แƒ แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ’แƒแƒ แƒ“แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ 10-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœ TMDS-แƒแƒ“ (แƒขแƒ แƒแƒœแƒ–แƒ˜แƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ˜แƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ). แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ DC แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒ“แƒแƒœ แƒแƒ›แƒแƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒ“แƒ˜แƒคแƒ”แƒ แƒ”แƒœแƒชแƒ˜แƒแƒšแƒฃแƒ  แƒฎแƒแƒ–แƒ–แƒ” แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ›แƒแƒ›แƒ“แƒ” แƒจแƒ”แƒกแƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ 10 แƒ‘แƒ˜แƒขแƒ˜ แƒแƒฎแƒšแƒ แƒกแƒ”แƒ แƒ˜แƒฃแƒš แƒฎแƒแƒ–แƒ–แƒ” แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒชแƒ”แƒก แƒ”แƒ แƒ—แƒ˜ แƒ‘แƒแƒ˜แƒขแƒ˜ แƒคแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ’แƒแƒ›แƒแƒ“แƒ˜แƒก, แƒ แƒแƒ› แƒกแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒกแƒแƒแƒ—แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ” 10-แƒฏแƒ”แƒ  แƒ›แƒ”แƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒแƒแƒ—แƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒ–แƒ”. แƒ—แƒฃ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“ แƒแƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ•แƒ˜แƒ“แƒ”แƒ แƒ แƒ”แƒŸแƒ˜แƒ›แƒก 1280x720 60Hz, แƒ›แƒแƒจแƒ˜แƒœ แƒแƒ› แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ 74,25 MHz. แƒกแƒ”แƒ แƒ˜แƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก 742,5 MHz.

แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒš FPGA-แƒ”แƒ‘แƒก, แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒ”แƒก แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ—. แƒ—แƒฃแƒ›แƒชแƒ, แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, FPGA-แƒก แƒแƒฅแƒ•แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ DDIO แƒฅแƒ˜แƒœแƒซแƒ˜แƒกแƒ—แƒแƒ•แƒ”แƒ‘แƒ˜. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒ™แƒ•แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒก แƒ˜แƒงแƒ, 2-แƒ“แƒแƒœ 1-แƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒ. แƒแƒœแƒฃ, แƒ›แƒแƒ— แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒแƒ แƒ˜ แƒ‘แƒ˜แƒขแƒ˜ แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒขแƒแƒœแƒแƒœ แƒกแƒแƒแƒ—แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ˜แƒก แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒ“แƒ แƒ“แƒแƒ•แƒแƒ แƒ“แƒœแƒ˜แƒš แƒ™แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ–แƒ”. แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› FPGA แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒแƒ แƒ 740 MHz, แƒแƒ แƒแƒ›แƒ”แƒ“ 370 MHz, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— DDIO แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ FPGA-แƒจแƒ˜. แƒแƒฎแƒšแƒ 370 MHz แƒฃแƒ™แƒ•แƒ” แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒแƒ“แƒ˜ แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ. แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, 1280x720 แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜ แƒแƒ แƒ˜แƒก แƒšแƒ˜แƒ›แƒ˜แƒขแƒ˜. แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ’แƒแƒ แƒฉแƒ”แƒ•แƒแƒ“แƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ Cyclone IV FPGA แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ Mars Rover2rpi แƒ“แƒแƒคแƒแƒ–แƒ”.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒจแƒ˜, แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ” CLK แƒ›แƒ˜แƒ“แƒ˜แƒก PLL-แƒ–แƒ”, แƒกแƒแƒ“แƒแƒช แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒšแƒ“แƒ”แƒ‘แƒ 5-แƒ–แƒ”. แƒแƒ› แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ–แƒ” R, G, B แƒ‘แƒแƒ˜แƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ แƒ“แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ‘แƒ˜แƒข แƒฌแƒงแƒ•แƒ˜แƒšแƒ”แƒ‘แƒแƒ“. แƒแƒ›แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก TMDS แƒจแƒ˜แƒคแƒ แƒแƒขแƒแƒ แƒ˜. แƒฌแƒงแƒแƒ แƒแƒก แƒ™แƒแƒ“แƒ˜ Verilog HDL-แƒจแƒ˜ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

module hdmi(
	input wire pixclk,		// 74MHz
	input wire clk_TMDS2,	// 370MHz
	input wire hsync,
	input wire vsync,
	input wire active,
	input wire [7:0]red,
	input wire [7:0]green,
	input wire [7:0]blue,
	output wire TMDS_bh,
	output wire TMDS_bl,
	output wire TMDS_gh,
	output wire TMDS_gl,
	output wire TMDS_rh,
	output wire TMDS_rl
);

wire [9:0] TMDS_red, TMDS_green, TMDS_blue;
TMDS_encoder encode_R(.clk(pixclk), .VD(red  ), .CD({vsync,hsync}), .VDE(active), .TMDS(TMDS_red));
TMDS_encoder encode_G(.clk(pixclk), .VD(green), .CD({vsync,hsync}), .VDE(active), .TMDS(TMDS_green));
TMDS_encoder encode_B(.clk(pixclk), .VD(blue ), .CD({vsync,hsync}), .VDE(active), .TMDS(TMDS_blue));

reg [2:0] TMDS_mod5=0;  // modulus 5 counter
reg [4:0] TMDS_shift_bh=0, TMDS_shift_bl=0;
reg [4:0] TMDS_shift_gh=0, TMDS_shift_gl=0;
reg [4:0] TMDS_shift_rh=0, TMDS_shift_rl=0;

wire [4:0] TMDS_blue_l  = {TMDS_blue[9],TMDS_blue[7],TMDS_blue[5],TMDS_blue[3],TMDS_blue[1]};
wire [4:0] TMDS_blue_h  = {TMDS_blue[8],TMDS_blue[6],TMDS_blue[4],TMDS_blue[2],TMDS_blue[0]};
wire [4:0] TMDS_green_l = {TMDS_green[9],TMDS_green[7],TMDS_green[5],TMDS_green[3],TMDS_green[1]};
wire [4:0] TMDS_green_h = {TMDS_green[8],TMDS_green[6],TMDS_green[4],TMDS_green[2],TMDS_green[0]};
wire [4:0] TMDS_red_l   = {TMDS_red[9],TMDS_red[7],TMDS_red[5],TMDS_red[3],TMDS_red[1]};
wire [4:0] TMDS_red_h   = {TMDS_red[8],TMDS_red[6],TMDS_red[4],TMDS_red[2],TMDS_red[0]};

always @(posedge clk_TMDS2)
begin
	TMDS_shift_bh <= TMDS_mod5[2] ? TMDS_blue_h  : TMDS_shift_bh  [4:1];
	TMDS_shift_bl <= TMDS_mod5[2] ? TMDS_blue_l  : TMDS_shift_bl  [4:1];
	TMDS_shift_gh <= TMDS_mod5[2] ? TMDS_green_h : TMDS_shift_gh  [4:1];
	TMDS_shift_gl <= TMDS_mod5[2] ? TMDS_green_l : TMDS_shift_gl  [4:1];
	TMDS_shift_rh <= TMDS_mod5[2] ? TMDS_red_h   : TMDS_shift_rh  [4:1];
	TMDS_shift_rl <= TMDS_mod5[2] ? TMDS_red_l   : TMDS_shift_rl  [4:1];
	TMDS_mod5 <= (TMDS_mod5[2]) ? 3'd0 : TMDS_mod5+3'd1;
end

assign TMDS_bh = TMDS_shift_bh[0];
assign TMDS_bl = TMDS_shift_bl[0];
assign TMDS_gh = TMDS_shift_gh[0];
assign TMDS_gl = TMDS_shift_gl[0];
assign TMDS_rh = TMDS_shift_rh[0];
assign TMDS_rl = TMDS_shift_rl[0];

endmodule

module TMDS_encoder(
	input clk,
	input [7:0] VD,	// video data (red, green or blue)
	input [1:0] CD,	// control data
	input VDE,  	// video data enable, to choose between CD (when VDE=0) and VD (when VDE=1)
	output reg [9:0] TMDS = 0
);

wire [3:0] Nb1s = VD[0] + VD[1] + VD[2] + VD[3] + VD[4] + VD[5] + VD[6] + VD[7];
wire XNOR = (Nb1s>4'd4) || (Nb1s==4'd4 && VD[0]==1'b0);
wire [8:0] q_m = {~XNOR, q_m[6:0] ^ VD[7:1] ^ {7{XNOR}}, VD[0]};

reg [3:0] balance_acc = 0;
wire [3:0] balance = q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7] - 4'd4;
wire balance_sign_eq = (balance[3] == balance_acc[3]);
wire invert_q_m = (balance==0 || balance_acc==0) ? ~q_m[8] : balance_sign_eq;
wire [3:0] balance_acc_inc = balance - ({q_m[8] ^ ~balance_sign_eq} & ~(balance==0 || balance_acc==0));
wire [3:0] balance_acc_new = invert_q_m ? balance_acc-balance_acc_inc : balance_acc+balance_acc_inc;
wire [9:0] TMDS_data = {invert_q_m, q_m[8], q_m[7:0] ^ {8{invert_q_m}}};
wire [9:0] TMDS_code = CD[1] ? (CD[0] ? 10'b1010101011 : 10'b0101010100) : (CD[0] ? 10'b0010101011 : 10'b1101010100);

always @(posedge clk) TMDS <= VDE ? TMDS_data : TMDS_code;
always @(posedge clk) balance_acc <= VDE ? balance_acc_new : 4'h0;

endmodule

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒฌแƒงแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ DDIO แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒšแƒแƒ“ แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒก แƒ”แƒ แƒ— แƒ‘แƒ˜แƒขแƒ˜แƒแƒœ แƒกแƒ˜แƒ’แƒœแƒแƒšแƒก แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒš แƒ“แƒ แƒ“แƒแƒ•แƒแƒ แƒ“แƒœแƒ˜แƒš แƒ™แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ–แƒ”.

แƒ—แƒแƒ•แƒแƒ“ DDIO แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ Verilog แƒ™แƒแƒ“แƒ˜แƒ—:

module ddio(
	input wire d0,
	input wire d1,
	input wire clk,
	output wire out
	);

reg r_d0;
reg r_d1;
always @(posedge clk)
begin
	r_d0 <= d0;
	r_d1 <= d1;
end
assign out = clk ? r_d0 : r_d1;
endmodule

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ“แƒ˜แƒ“แƒ˜ แƒแƒšแƒ‘แƒแƒ—แƒแƒ‘แƒ˜แƒ— แƒ”แƒก แƒแƒกแƒ” แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— Alter-แƒ˜แƒก แƒ›แƒ”แƒ’แƒแƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ ALTDDIO_OUT, แƒ แƒแƒ› แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒฉแƒแƒ แƒ—แƒแƒ— DDIO แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜. แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก ALTDDIO_OUT แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก.

แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒชแƒแƒขแƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒฉแƒแƒœแƒ“แƒ”แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— Verilog HDL-แƒจแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒงแƒแƒ แƒแƒก แƒ™แƒแƒ“แƒ˜ แƒแƒฅ github-แƒ–แƒ”.

FPGA-แƒกแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ EPCS แƒฉแƒ˜แƒžแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Mars Rover2rpi แƒ“แƒแƒคแƒแƒ–แƒ”. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, FPGA แƒ“แƒแƒคแƒแƒ–แƒ” แƒ”แƒšแƒ”แƒฅแƒขแƒ แƒแƒ”แƒœแƒ”แƒ แƒ’แƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก, FPGA แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒ“แƒ”แƒ‘แƒ แƒคแƒšแƒ”แƒจ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ.

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒชแƒแƒขแƒ แƒฃแƒœแƒ“แƒ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒแƒ— แƒ—แƒแƒ•แƒแƒ“ Raspberry-แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒ–แƒ”.

แƒ›แƒ” แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก Raspberry PI OS-แƒ–แƒ” (32 แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜) Debian Buster-แƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ”, แƒ•แƒ”แƒ แƒกแƒ˜แƒ: แƒแƒ’แƒ•แƒ˜แƒกแƒขแƒ 2020,
แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒ˜: 2020-08-20, แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒ: 5.4.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒแƒ แƒ˜ แƒ แƒแƒ›:

  • config.txt แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ;
  • แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— X แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒแƒ  แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

/boot/config.txt แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—:

  1. แƒ’แƒแƒ›แƒแƒ แƒ—แƒ”แƒ— i2c, i2s, spi-แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ;
  2. DPI แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ แƒ’แƒแƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— dtoverlay=dpi24;
  3. แƒ•แƒ˜แƒ“แƒ”แƒ แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ 1280ร—720 60Hz, 24 แƒ‘แƒ˜แƒขแƒ˜ แƒ—แƒ˜แƒ—แƒ แƒžแƒ˜แƒฅแƒกแƒ”แƒšแƒ–แƒ” DPI-แƒ–แƒ”;
  4. แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒคแƒ แƒ”แƒ˜แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ 2 (max_framebuffers=2, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ /dev/fb1)

config.txt แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ.

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

dtparam=i2c_arm=off
dtparam=spi=off
dtparam=i2s=off

dtoverlay=dpi24
overscan_left=0
overscan_right=0
overscan_top=0
overscan_bottom=0
framebuffer_width=1280
framebuffer_height=720
display_default_lcd=0
enable_dpi_lcd=1
dpi_group=2
dpi_mode=87
#dpi_group=1
#dpi_mode=4
dpi_output_format=0x6f027
dpi_timings=1280 1 110 40 220 720 1 5 5 20 0 0 0 60 0 74000000 3

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
#dtoverlay=vc4-fkms-v3d
max_framebuffers=2

[all]
#dtoverlay=vc4-fkms-v3d
max_framebuffers=2

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ X แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒแƒ แƒ˜ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜ แƒแƒ  แƒคแƒ แƒ”แƒ›แƒ‘แƒฃแƒคแƒ”แƒ แƒ–แƒ” /dev/fb0 แƒ“แƒ /dev/fb1:

แƒฉแƒ”แƒ›แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ /usr/share/x11/xorg.conf.d/60-dualscreen.conf แƒแƒกแƒ”แƒ—แƒ˜แƒ

Section "Device"
        Identifier      "LCD"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb0"
        Option          "ShadowFB" "off"
        Option          "SwapbuffersWait" "true"
EndSection

Section "Device"
        Identifier      "HDMI"
        Driver          "fbturbo"
        Option          "fbdev" "/dev/fb1"
        Option          "ShadowFB" "off"
        Option          "SwapbuffersWait" "true"
EndSection

Section "Monitor"
        Identifier      "LCD-monitor"
        Option          "Primary" "true"
EndSection

Section "Monitor"
        Identifier      "HDMI-monitor"
        Option          "RightOf" "LCD-monitor"
EndSection

Section "Screen"
        Identifier      "screen0"
        Device          "LCD"
        Monitor         "LCD-monitor"
EndSection

Section "Screen"
        Identifier      "screen1"
        Device          "HDMI" 
	Monitor         "HDMI-monitor"
EndSection

Section "ServerLayout"
        Identifier      "default"
        Option          "Xinerama" "on"
        Option          "Clone" "off"
        Screen 0        "screen0"
        Screen 1        "screen1" RightOf "screen0"
EndSection

แƒ™แƒแƒ แƒ’แƒแƒ“, แƒ—แƒฃ แƒ˜แƒก แƒฃแƒ™แƒ•แƒ” แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— Xinerama. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒ”แƒกแƒ™แƒขแƒแƒžแƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ” แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒแƒ  แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒ“แƒ”แƒ›แƒ แƒ•แƒ˜แƒ“แƒ”แƒแƒจแƒ˜.

แƒแƒšแƒ‘แƒแƒ— แƒกแƒฃแƒš แƒ”แƒกแƒแƒ. แƒแƒฎแƒšแƒ Raspberry Pi3-แƒ˜แƒก แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒ”แƒ‘แƒก แƒแƒ แƒ˜ แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ”แƒซแƒšแƒ”แƒ‘แƒแƒ—.

Mars Rover2rpi แƒ“แƒแƒคแƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒฅแƒ”แƒ›แƒ˜แƒก แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒœแƒแƒฎแƒ” แƒแƒฅ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com