เช เชตเชฟเชกเชฟเชฏเซ เชฌเชคเชพเชตเซ เชเซ: เชฐเชพเชธเซเชชเชฌเซเชฐเซ Pi3 เชฌเซเชฐเซเชก, GPIO เชเชจเซเชเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชคเซเชจเซ เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒ FPGA เชฌเซเชฐเซเชก Mars Rover2rpi (เชธเชพเชฏเชเซเชฒเซเชจ IV) เชเซ, เชเซเชจเซ เชธเชพเชฅเซ HDMI เชฎเซเชจเชฟเชเชฐ เชเซเชกเชพเชฏเซเชฒ เชเซ. เชฌเซเชเซเช เชฎเซเชจเชฟเชเชฐ เชฐเชพเชธเซเชชเชฌเซเชฐเซ Pi3 เชจเชพ เชชเซเชฐเชฎเชพเชฃเชญเซเชค HDMI เชเชจเซเชเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชเซเชกเชพเชฏเซเชฒ เชเซ. เชกเซเชฏเซเช เชฒ เชฎเซเชจเชฟเชเชฐ เชธเชฟเชธเซเชเชฎเชจเซ เชเซเชฎ เชฌเชงเซเช เชเชเชธเชพเชฅเซ เชเชพเชฎ เชเชฐเซ เชเซ.
เชเชเชณ เชนเซเช เชคเชฎเชจเซ เชเชนเซเชถ เชเซ เช เชเซเชตเซ เชฐเซเชคเซ เช
เชฎเชฒเชฎเชพเช เชเชตเซ เชเซ.
เชฒเซเชเชชเซเชฐเชฟเชฏ เชฐเชพเชธเซเชชเชฌเซเชฐเซ Pi3 เชฌเซเชฐเซเชกเชฎเชพเช GPIO เชเชจเซเชเซเชเชฐ เชเซ เชเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชคเชฎเซ เชตเชฟเชตเชฟเชง เชตเชฟเชธเซเชคเชฐเชฃ เชเชพเชฐเซเชกเซเชธเชจเซ เชเชจเซเชเซเช เชเชฐเซ เชถเชเซ เชเซ: เชธเซเชจเซเชธเชฐ, LEDs, เชธเซเชเซเชชเชฐ เชฎเซเชเชฐ เชกเซเชฐเชพเชเชตเชฐเซเชธ เช เชจเซ เชเชฃเซเช เชฌเชงเซเช. เชเชจเซเชเซเชเชฐ เชชเชฐ เชฆเชฐเซเช เชชเชฟเชจเชจเซเช เชเซเชเซเชเชธ เชเชพเชฐเซเชฏ เชชเซเชฐเซเช เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ. GPIO ALT2 เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชคเชฎเชจเซ เชเชจเซเชเซเชเชฐเชจเซ DPI เชเชจเซเชเชฐเชซเซเชธ เชฎเซเชก, เชกเชฟเชธเซเชชเซเชฒเซ เชธเชฎเชพเชเชคเชฐ เชเชจเซเชเชฐเชซเซเชธ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. VGA เชฎเซเชจเชฟเชเชฐเชจเซ DPI เชฎเชพเชฐเชซเชคเซ เชเชจเซเชเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชตเชฟเชธเซเชคเชฐเชฃ เชเชพเชฐเซเชก เชเซ. เชเซ เชเซ, เชชเซเชฐเชฅเชฎ, VGA เชฎเซเชจเชฟเชเชฐเซเชธ เชนเชตเซ HDMI เชเซเชเชฒเชพ เชธเชพเชฎเชพเชจเซเชฏ เชจเชฅเซ เช เชจเซ เชฌเซเชเซเช, เชกเชฟเชเชฟเชเชฒ เชเชจเซเชเชฐเชซเซเชธ เชเชจเชพเชฒเซเช เชเชฐเชคเชพ เชตเชงเซเชจเซ เชตเชงเซ เชธเชพเชฐเซเช เชเซ. เชคเชฆเซเชชเชฐเชพเชเชค, เชเชตเชพ VGA เชตเชฟเชธเซเชคเชฐเชฃ เชฌเซเชฐเซเชก เชชเชฐ DAC เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ R-2-R เชธเชพเชเชเชณเซเชจเชพ เชธเซเชตเชฐเซเชชเชฎเชพเช เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช เชจเซ เชเชฃเซเชตเชพเชฐ เชคเซ เชฐเชเช เชฆเซเช 6 เชฌเชฟเชเซเชธ เชเชฐเชคเชพเช เชตเชงเซ เชนเซเชคเซเช เชจเชฅเซ.
ALT2 เชฎเซเชกเชฎเชพเช, GPIO เชเชจเซเชเซเชเชฐ เชชเชฟเชจเชจเซ เชจเซเชเซเชจเซ เช เชฐเซเชฅ เชเซ:
เช
เชนเซเช เชฎเซเช เชเชจเซเชเซเชเชฐเชจเซ RGB เชชเชฟเชจ เช
เชจเซเชเซเชฐเชฎเซ เชฒเชพเชฒ, เชฒเซเชฒเชพ เช
เชจเซ เชตเชพเชฆเชณเซ เชฐเชเชเชจเซ เชเชฐเซ เชเซ. เช
เชจเซเชฏ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชธเชเชเซเชคเซ V-SYNC เช
เชจเซ H-SYNC เชธเชเชเซเชคเซ เชคเซเชฎเช CLK เชเซ. CLK เชเชกเชฟเชฏเชพเชณเชจเซ เชเชตเชฐเซเชคเชจ เช เชเชตเชฐเซเชคเชจ เชเซ เชเซ เชเซเชจเชพ เชชเชฐ เชชเชฟเชเซเชธเซเชฒ เชฎเซเชฒเซเชฏเซ เชเชจเซเชเซเชเชฐเชฎเชพเช เชเชเชเชชเซเช เชฅเชพเชฏ เชเซ; เชคเซ เชชเชธเชเชฆ เชเชฐเซเชฒ เชตเชฟเชกเชฟเช เชฎเซเชก เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ.
เชกเชฟเชเชฟเชเชฒ HDMI เชฎเซเชจเชฟเชเชฐเชจเซ เชเชจเซเชเซเช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชเชจเซเชเชฐเชซเซเชธเชจเชพ DPI เชธเชฟเชเซเชจเชฒเซเชจเซ เชเซเชชเซเชเชฐ เชเชฐเชตเชพเชจเซ เช เชจเซ เชคเซเชฎเชจเซ HDMI เชธเชฟเชเซเชจเชฒเซเชฎเชพเช เชเชจเซเชตเชฐเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เช เชฎเซเช เชชเซเชฐเชเชพเชฐเชจเชพ FPGA เชฌเซเชฐเซเชกเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ. เชเซเชฎ เชเซเชฎ เชคเซ เชฌเชนเชพเชฐ เชเชตเซเชฏเซเช เชเซ, เชฎเชพเชฐเซเชธ เชฐเซเชตเชฐ2เชเชฐเชชเซเชเช เชฌเซเชฐเซเชก เช เชนเซเชคเซเช เชฎเชพเชเซ เชฏเซเชเซเชฏ เชเซ. เชนเชเซเชเชคเชฎเชพเช, เช เชฌเซเชฐเซเชกเชจเซ เชตเชฟเชถเชฟเชทเซเช เชเชกเซเชชเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชเชจเซเชเซเช เชเชฐเชตเชพเชจเซ เชฎเซเชเซเชฏ เชตเชฟเชเชฒเซเชช เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ:
เช เชฌเซเชฐเซเชกเชจเซ เชเชชเชฏเซเช GPIO เชชเซเชฐเซเชเชจเซ เชธเชเชเซเชฏเชพ เชตเชงเชพเชฐเชตเชพ เช
เชจเซ เชตเชงเซ เชชเซเชฐเชฟเชซเซเชฐเชฒ เชเชชเชเชฐเชฃเซเชจเซ เชฐเชพเชธเซเชชเชฌเซเชฐเซ เชธเชพเชฅเซ เชเซเชกเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ. เชคเซ เช เชธเชฎเชฏเซ, เช เชเชจเซเชเซเชถเชจ เชธเชพเชฅเซเชจเชพ 4 GPIO เชธเชฟเชเซเชจเชฒเซเชจเซ เชเชชเชฏเซเช JTAG เชธเชฟเชเซเชจเชฒเซ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ, เชเซเชฅเซ เชฐเชพเชธเซเชชเชฌเซเชฐเซเชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ FPGA เชซเชฐเซเชฎเชตเซเชฐเชจเซ FPGA เชฎเชพเช เชฒเซเชก เชเชฐเซ เชถเชเซ. เช เชเชพเชฐเชฃเซ, เช เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชเชจเซเชเซเชถเชจ เชฎเชจเซ เช
เชจเซเชเซเชณ เชจเชฅเซ; 4 DPI เชธเชฟเชเซเชจเชฒ เชกเซเชฐเซเชช เชเชเช. เชธเชฆเชญเชพเชเซเชฏเซ, เชฌเซเชฐเซเชก เชชเชฐเชจเชพ เชตเชงเชพเชฐเชพเชจเชพ เชเซเชฎเซเชฌเซเชธเชฎเชพเช เชฐเชพเชธเซเชชเชฌเซเชฐเซ-เชธเซเชธเชเชเชค เชชเชฟเชจเชเชเช เชเซ. เชคเซเชฅเซ เชนเซเช เชฌเซเชฐเซเชกเชจเซ 90 เชกเชฟเชเซเชฐเซ เชซเซเชฐเชตเซ เชถเชเซเช เชเซเช เช
เชจเซ เชนเชเซ เชชเชฃ เชคเซเชจเซ เชฎเชพเชฐเชพ เชฐเชพเชธเซเชชเชฌเซเชฐเซ เชธเชพเชฅเซ เชเซเชกเซ เชถเชเซเช เชเซเช:
เช
เชฒเชฌเชคเซเชค, เชคเชฎเชพเชฐเซ เชฌเชพเชนเซเชฏ JTAG เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เชชเชกเชถเซ, เชชเชฐเชเชคเซ เช เชเซเช เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ.
เชนเชเซ เชเช เชจเชพเชจเซ เชธเชฎเชธเซเชฏเชพ เชเซ. เชฆเชฐเซเช FPGA เชชเชฟเชจเชจเซ เชเชชเชฏเซเช เชเชกเชฟเชฏเชพเชณเชจเชพ เชเชจเชชเซเช เชคเชฐเซเชเซ เชเชฐเซ เชถเชเชพเชคเซ เชจเชฅเซ. เชคเซเชฏเชพเช เชฎเชพเชคเซเชฐ เชฅเซเชกเชพ เชธเชฎเชฐเซเชชเชฟเชค เชชเชฟเชจ เชเซ เชเซเชจเซ เชเชชเชฏเซเช เช เชนเซเชคเซเช เชฎเชพเชเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ. เชคเซเชฅเซ เชคเซ เช เชนเซเช เชฌเชนเชพเชฐ เชเชตเซเชฏเซเช เชเซ GPIO_0 CLK เชธเชฟเชเซเชจเชฒ FPGA เชเชจเชชเซเช เชธเซเชงเซ เชชเชนเซเชเชเชคเซเช เชจเชฅเซ, เชเซเชจเซ เชเชชเชฏเซเช FPGA เชเชกเชฟเชฏเชพเชณ เชเชจเชชเซเช เชคเชฐเซเชเซ เชฅเช เชถเชเซ เชเซ. เชคเซเชฅเซ เชฎเชพเชฐเซ เชนเชเซ เชชเชฃ เชธเซเชเชพเชฐเซเชซ เชชเชฐ เชเช เชตเชพเชฏเชฐ เชฎเซเชเชตเชพเชจเซ เชนเชคเซ. เชนเซเช GPIO_0 เช เชจเซ เชฌเซเชฐเซเชกเชจเชพ KEY[1] เชธเชฟเชเซเชจเชฒเชจเซ เชเชจเซเชเซเช เชเชฐเซเช เชเซเช:
เชนเชตเซ เชนเซเช เชคเชฎเชจเซ FPGA เชชเซเชฐเซเชเซเชเซเช เชตเชฟเชถเซ เชฅเซเชกเซเช เชเชนเซเชถ. HDMI เชธเชฟเชเซเชจเชฒ เชเชจเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชฎเซเชเซเชฏ เชฎเซเชถเซเชเซเชฒเซ เชเซเชฌ เชเชเชเซ เชซเซเชฐเซเชเซเชตเชจเซเชธเซเช เชเซ. เชเซ เชคเชฎเซ HDMI เชเชจเซเชเซเชเชฐ เชชเชฟเชจเชเชเช เชเซเช เชเซ, เชคเซ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ เชเซ RGB เชธเชฟเชเซเชจเชฒเซ เชนเชตเซ เชธเซเชฐเซเชฏเชฒ เชกเชฟเชซเชฐเชจเซเชธเชฟเชฏเชฒ เชธเชฟเชเซเชจเชฒเซ เชเซ:
เชตเชฟเชญเซเชฆเช เชธเชฟเชเซเชจเชฒเชจเซ เชเชชเชฏเซเช เชคเชฎเชจเซ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชฒเชพเชเชจ เชชเชฐ เชธเชพเชฎเชพเชจเซเชฏ เชฎเซเชกเชจเซ เชฆเชเชฒ เชธเชพเชฎเซ เชฒเชกเชตเชพ เชฎเชพเชเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชฆเชฐเซเช เชฐเชเช เชธเชฟเชเซเชจเชฒเชจเซ เชฎเซเชณ เชเช -เชฌเซเช เชเซเชก 10-เชฌเซเช TMDS (เชเซเชฐเชพเชจเซเชเซเชถเชจ-เชฎเชฟเชจเชฟเชฎเชพเชเชเซเชก เชกเชฟเชซเชฐเชจเซเชธเชฟเชฏเชฒ เชธเชฟเชเซเชจเชฒเชฟเชเช) เชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชฅเชพเชฏ เชเซ. เชธเชฟเชเซเชจเชฒเชฎเชพเชเชฅเซ DC เชเชเชเชจเซ เชฆเซเชฐ เชเชฐเชตเชพ เช
เชจเซ เชตเชฟเชญเซเชฆเช เชฐเซเชเชพเชฎเชพเช เชธเชฟเชเซเชจเชฒ เชธเซเชตเชฟเชเชฟเชเชเชจเซ เชเชเชพเชกเชตเชพ เชฎเชพเชเซ เช เชเช เชตเชฟเชถเชฟเชทเซเช เชเซเชกเชฟเชเช เชชเชฆเซเชงเชคเชฟ เชเซ. 10 เชฌเชฟเชเซเชธ เชนเชตเซ เชฐเชเชเชจเชพ เชเช เชฌเชพเชเช เชฎเชพเชเซ เชธเซเชฐเซเชฏเชฒ เชฒเชพเชเชจ เชชเชฐ เชชเซเชฐเชธเชพเชฐเชฟเชค เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชตเชพเชฅเซ, เชคเซ เชคเชพเชฐเชฃ เชเชชเซ เชเซ เชเซ เชธเซเชฐเซเชฏเชฒเชพเชเชเชฐเชจเซ เชเชกเชฟเชฏเชพเชณเชจเซ เชเชกเชช เชชเชฟเชเซเชธเซเชฒ เชเชกเชฟเชฏเชพเชณเชจเซ เชเชกเชช เชเชฐเชคเชพเช 10 เชเชฃเซ เชตเชงเชพเชฐเซ เชนเซเชตเซ เชเซเชเช. เชเซ เชเชชเชฃเซ เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชตเชฟเชกเชฟเชฏเซ เชฎเซเชก 1280x720 60Hz เชฒเชเช, เชคเซ เช เชฎเซเชกเชจเซ เชชเชฟเชเซเชธเซเชฒ เชซเซเชฐเซเชเซเชตเชจเซเชธเซ 74,25 MHz เชเซ. เชธเซเชฐเซเชฏเชฒเชพเชเชเชฐ 742,5 MHz เชนเซเชตเซเช เชเซเชเช.
เชจเชฟเชฏเชฎเชฟเชค FPGAs, เชเชฎเชจเชธเซเชฌเซ, เช เชฎเชพเชเซ เชธเชเซเชทเชฎ เชจเชฅเซ. เชเซ เชเซ, เชธเชฆเชจเชธเซเชฌเซ เช เชฎเชพเชฐเชพ เชฎเชพเชเซ, FPGA เชฎเชพเช เชฌเชฟเชฒเซเช-เชเชจ DDIO เชชเชฟเชจ เชเซ. เช เชเชตเชพ เชคเชพเชฐเชฃเซ เชเซ เชเซ เชชเชนเซเชฒเชพเชฅเซ เช เชเซ, เชเซเชฎ เชเซ เชคเซ เชนเชคเชพ, 2-เชฅเซ-1 เชธเซเชฐเซเชฏเชฒเชพเชเชเชฐเซเชธ. เชเชเชฒเซ เชเซ, เชคเซเช เชเชกเชฟเชฏเชพเชณเชจเซ เชเชตเชฐเซเชคเชจเชจเซ เชตเชงเชคเซ เช เชจเซ เชชเชกเชคเซ เชเชฟเชจเชพเชฐเซเช เชชเชฐ เชเซเชฐเชฎเชฟเช เชฐเซเชคเซ เชฌเซ เชฌเชฟเชเซเชธ เชเชเชเชชเซเช เชเชฐเซ เชถเชเซ เชเซ. เชเชจเซ เช เชฐเซเชฅ เช เชเซ เชเซ FPGA เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชคเชฎเซ 740 MHz เชจเชนเชฟ, เชชเชฐเชเชคเซ 370 MHz เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ, เชชเชฐเชเชคเซ เชคเชฎเชพเชฐเซ FPGA เชฎเชพเช DDIO เชเชเชเชชเซเช เชคเชคเซเชตเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชนเชตเซ 370 MHz เชชเชนเซเชฒเซเชฅเซ เช เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชถเชเชพเชฏ เชคเซเชตเซ เชเชตเชฐเซเชคเชจ เชเซ. เชเชฎเชจเชธเซเชฌเซ, 1280x720 เชฎเซเชก เช เชฎเชฐเซเชฏเชพเชฆเชพ เชเซ. เชฎเชพเชฐเซเชธ เชฐเซเชตเชฐ2เชเชฐเชชเซเชเช เชฌเซเชฐเซเชก เชชเชฐ เชธเซเชฅเชพเชชเชฟเชค เช เชฎเชพเชฐเชพ เชเชเซเชฐเชตเชพเชค IV FPGA เชฎเชพเช เชเชเซเช เชฐเชฟเชเซเชฒเซเชฏเซเชถเชจ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชถเชเชพเชคเซเช เชจเชฅเซ.
เชคเซเชฅเซ, เชกเชฟเชเชพเชเชจเชฎเชพเช, เชเชจเชชเซเช เชชเชฟเชเซเชธเซเชฒ เชเชตเชฐเซเชคเชจ CLK PLL เชชเชฐ เชเชพเชฏ เชเซ, เชเซเชฏเชพเช เชคเซเชจเซ 5 เชตเชกเซ เชเซเชฃเชพเชเชพเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชเชตเชฐเซเชคเชจ เชชเชฐ, R, G, B เชฌเชพเชเชเซเชธ เชฌเซเช เชเซเชกเซเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชฅเชพเชฏ เชเซ. เช เชคเซ เชเซ เชเซ TMDS เชเชจเซเชเซเชกเชฐ เชเชฐเซ เชเซ. เชตเซเชฐเชฟเชฒเซเช เชเชเชกเซเชเชฒเชฎเชพเช เชธเซเชคเซเชฐเซเชค เชเซเชก เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ:
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 เชจเซ เชจเซเชเซเชจเชพ เชตเซเชฐเชฟเชฒเซเช เชเซเชก เชธเชพเชฅเซ เชตเชฐเซเชฃเชตเซ เชถเชเชพเชฏ เชเซ:
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
เชชเชฐเชเชคเซ เชคเซ เชฎเซเชเซ เชญเชพเชเซ เชคเซ เชฐเซเชคเซ เชเชพเชฎ เชเชฐเชถเซ เชจเชนเซเช. DDIO เชเชเชเชชเซเช เชคเชคเซเชตเซเชจเซ เชตเชพเชธเซเชคเชตเชฎเชพเช เชธเชเซเชทเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ Alter เชจเชพ เชฎเซเชเชพเชซเชเชเซเชถเชจ ALTDIO_OUT เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช ALTDIO_OUT เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชเชเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.
เช เชฌเชงเซเช เชฅเซเชกเซเช เชฎเซเชถเซเชเซเชฒ เชฒเชพเชเซ เชเซ, เชชเชฐเชเชคเซ เชคเซ เชเชพเชฎ เชเชฐเซ เชเซ.
เชคเชฎเซ เชตเซเชฐเชฟเชฒเซเช HDL เชฎเชพเช เชฒเชเซเชฒเชพ เชคเชฎเชพเชฎ เชธเซเชฐเซเชค เชเซเชก เชเซเช เชถเชเซ เชเซ
FPGA เชฎเชพเชเซ เชเชฎเซเชชเชพเชเชฒ เชเชฐเซเชฒ เชซเชฐเซเชฎเชตเซเชฐเชจเซ Mars Rover2rpi เชฌเซเชฐเซเชก เชชเชฐ เชธเซเชฅเชพเชชเชฟเชค EPCS เชเชฟเชชเชฎเชพเช เชซเซเชฒเซเชถ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชเชฎ, เชเซเชฏเชพเชฐเซ เชเชซเชชเซเชเซเช เชฌเซเชฐเซเชก เชชเชฐ เชชเชพเชตเชฐ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชเชซเชชเซเชเซเช เชซเซเชฒเซเชถ เชฎเซเชฎเชฐเซเชฎเชพเชเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชฅเชถเซ เช เชจเซ เชถเชฐเซ เชฅเชถเซ.
เชนเชตเซ เชเชชเชฃเซ เชฐเชพเชธเซเชชเชฌเซเชฐเซเชจเชพ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชตเชฟเชถเซ เชฅเซเชกเซ เชตเชพเชค เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชนเซเช เชกเซเชฌเชฟเชฏเชจ เชฌเชธเซเชเชฐ, เชธเชเชธเซเชเชฐเชฃ: เชเชเชธเซเช 32 เชชเชฐ เชเชงเชพเชฐเชฟเชค เชฐเชพเชธเซเชชเชฌเซเชฐเซ PI OS (2020 เชฌเซเช) เชชเชฐ เชชเซเชฐเชฏเซเชเซ เชเชฐเซ เชฐเชนเซเชฏเซ เชเซเช.
เชชเซเชฐเชเชพเชถเชจ เชคเชพเชฐเซเช: 2020-08-20, เชเชฐเซเชจเชฒ เชธเชเชธเซเชเชฐเชฃ: 5.4.
เชคเชฎเชพเชฐเซ เชฌเซ เชตเชธเซเชคเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
- config.txt เชซเชพเชเชฒเชฎเชพเช เชซเซเชฐเชซเชพเชฐ เชเชฐเซ;
- เชฌเซ เชฎเซเชจเชฟเชเชฐ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ X เชธเชฐเซเชตเชฐ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชฌเชจเชพเชตเซ.
/boot/config.txt เชซเชพเชเชฒเชจเซ เชธเชเชชเชพเชฆเชฟเชค เชเชฐเชคเซ เชตเชเชคเซ เชคเชฎเชจเซ เชเชฐเซเชฐ เชเซ:
- i2c, i2s, spi เชจเซ เชเชชเชฏเซเช เช เชเซเชทเชฎ เชเชฐเซ;
- เชเชตเชฐเชฒเซ dtoverlay=dpi24 เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ DPI เชฎเซเชกเชจเซ เชธเชเซเชทเชฎ เชเชฐเซ;
- เชตเชฟเชกเชฟเชฏเซ เชฎเซเชก 1280ร720 60Hz, DPI เชชเชฐ เชชเชฟเชเซเชธเซเชฒ เชฆเซเช 24 เชฌเชฟเชเซเชธ เชเซเช เชตเซ;
- เชซเซเชฐเซเชฎเชฌเชซเชฐเซเชธ 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
เช เชชเชเซ, เชคเชฎเชพเชฐเซ เชฌเซ เชซเซเชฐเซเชฎเชฌเชซเชฐ /dev/fb0 เช เชจเซ /dev/fb1 เชชเชฐ เชฌเซ เชฎเซเชจเชฟเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ X เชธเชฐเซเชตเชฐ เชฎเชพเชเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
เชฎเชพเชฐเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒ /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 เชฎเชพเชฒเชฟเชเซ เชฌเซ เชฎเซเชจเชฟเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเชถเซ.
เชฎเชพเชฐเซเชธ เชฐเซเชตเชฐ2เชเชฐเชชเซเชเช เชฌเซเชฐเซเชกเชจเซเช เชตเชฐเซเชฃเชจ เช
เชจเซ เชธเชฐเซเชเชฟเช เชกเชพเชฏเชพเชเซเชฐเชพเชฎ เชฎเชณเซ เชถเชเซ เชเซ
เชธเซเชฐเซเชธ: www.habr.com