litex-hub / litevideo Goto Github PK
View Code? Open in Web Editor NEWSmall footprint and configurable video cores (Deprecated)
License: Other
Small footprint and configurable video cores (Deprecated)
License: Other
According to SelectIO, p.153 ISERDESE2
can be clocked by either a pair of BUFG
or a BUFIO
+ BUFR
.
- make firmware check (atlys video lm32 firmware)
---------------------------------------------
mkdir -p build/atlys_video_lm32/
time python -u ./make.py --platform=atlys --target=video --cpu-type=lm32 --iprange=192.168.100 -Ob toolchain_path /home/travis/build/timvideos/HDMI2USB-litex-firmware/build/Xilinx/opt/Xilinx/ --no-compile-gateware \
2>&1 | tee -a build/atlys_video_lm32//output.20180204-121057.log; (exit ${PIPESTATUS[0]})
Traceback (most recent call last):
File "./make.py", line 143, in <module>
main()
File "./make.py", line 108, in main
soc = SoC(platform, ident=SoC.__name__, **soc_sdram_argdict(args), **dict(args.target_option))
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/targets/atlys/video.py", line 31, in __init__
fifo_depth=512)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litevideo/litevideo/input/__init__.py", line 32, in __init__
self.submodules.clocking = clocking_cls[device](pads, clkin_freq)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litevideo/litevideo/input/clocking.py", line 10, in __init__
assert clk_polarity == 0
NameError: name 'clk_polarity' is not defined
real 0m1.619s
user 0m1.161s
sys 0m0.083s
make: *** [firmware-cmd] Error 1
I achieved 1280x720p and 1024x768 16-bit color and 32-bit color respectively
Detalla on litex-hub: litex-hub/litex-boards#239
$ for DIR in $(find -name test -type d); do (cd $DIR; make); done
PYTHONPATH=../../../ python3 rgb2ycbcr_tb.py
Traceback (most recent call last):
File "rgb2ycbcr_tb.py", line 52, in <module>
tb = TB()
File "rgb2ycbcr_tb.py", line 18, in __init__
self.streamer.source.connect(self.rgb2ycbcr.sink, leave_out=["data"]),
TypeError: connect() got an unexpected keyword argument 'leave_out'
make: *** [rgb2ycbcr_tb] Error 1
PYTHONPATH=../../../ python3 core_tb.py
Traceback (most recent call last):
File "core_tb.py", line 4, in <module>
from litex.soc.interconnect import lasmi_bus
ImportError: cannot import name lasmi_bus
make: *** [core_tb] Error 1
The command "for DIR in $(find -name test -type d); do (cd $DIR; make); done" exited with 2.
Had to change the initiator slightly...
` # VGA terminal
self.mem_map["terminal"] = 0x30000000
self.submodules.terminal = terminal = Terminal()
self.add_wb_slave(self.mem_map["terminal"], self.terminal.bus, 8896)
self.add_memory_region("terminal", self.mem_map["terminal"], 8896, type="cached+linker")
# Connect VGA pins
vga = platform.request("vga", 0)
self.comb += [
vga.vsync.eq(terminal.vsync),
vga.hsync.eq(terminal.hsync),
vga.red.eq(terminal.red[2:8]),
vga.green.eq(terminal.green[2:8]),
vga.blue.eq(terminal.blue[2:8])
]
vga.en.eq(1)
`
Relevent pins from the de10nano platform file...
("vga", 0, Subsignal("red", Pins("AE17 AE20 AF20 AH18 AH19 AF21")), Subsignal("green", Pins("AE19 AG15 AF18 AG18 AG19 AG20")), Subsignal("blue", Pins("AG21 AA20 AE22 AF22 AH23 AH21")), Subsignal("hsync", Pins("AH22")), Subsignal("vsync", Pins("AG24")), Subsignal("en", Pins("AH27")), IOStandard("3.3-V LVTTL") ),
I've started using the YCbCr2RGB along with YCbCr422_444 on a project converting FLIR Boson thermal camera to HDMI.
Hit some small issues I wanted to write down before I forget.
I'd like to look into these issue in a bit more detail, but don't have the cycles right now, I suspect these might be result of using a different verilog frontend during synthesis, vivado/yosys.
These are the changes I had to make:
diff --git a/litevideo/csc/ycbcr2rgb.py b/litevideo/csc/ycbcr2rgb.py
index 50b2789..360090d 100644
--- a/litevideo/csc/ycbcr2rgb.py
+++ b/litevideo/csc/ycbcr2rgb.py
@@ -70,17 +71,17 @@ class YCbCr2RGBDatapath(Module):
# (cb - coffset)*bcoef
# (cr - coffset)*ccoef
# (cb - coffset)*dcoef
- y_minus_yoffset = Signal((ycbcr_w + 1, True))
+ y_minus_yoffset = Signal((ycbcr_w + 4, True))
cr_minus_coffset_mult_acoef = Signal((ycbcr_w + coef_w + 4, True))
cb_minus_coffset_mult_bcoef = Signal((ycbcr_w + coef_w + 4, True))
cr_minus_coffset_mult_ccoef = Signal((ycbcr_w + coef_w + 4, True))
cb_minus_coffset_mult_dcoef = Signal((ycbcr_w + coef_w + 4, True))
self.sync += [
y_minus_yoffset.eq(ycbcr_delayed[1].y - coefs["yoffset"]),
- cr_minus_coffset_mult_acoef.eq(cr_minus_coffset * coefs["acoef"]),
- cb_minus_coffset_mult_bcoef.eq(cb_minus_coffset * coefs["bcoef"]),
- cr_minus_coffset_mult_ccoef.eq(cr_minus_coffset * coefs["ccoef"]),
- cb_minus_coffset_mult_dcoef.eq(cb_minus_coffset * coefs["dcoef"])
+ cr_minus_coffset_mult_acoef.eq(cr_minus_coffset * Signal((ycbcr_w, True), reset=coefs["acoef"] )),
+ cb_minus_coffset_mult_bcoef.eq(cb_minus_coffset * Signal((ycbcr_w, True), reset=coefs["bcoef"] )),
+ cr_minus_coffset_mult_ccoef.eq(cr_minus_coffset * Signal((ycbcr_w, True), reset=coefs["ccoef"] )),
+ cb_minus_coffset_mult_dcoef.eq(cb_minus_coffset * Signal((ycbcr_w, True), reset=coefs["dcoef"] ))
]
# stage 3
Without y_minus_yoffset
's width increased I was getting white pixels when Y saturated, instead of the correct colour.
Without wrapping the coefs in Signed signals the signed multiplication was not being inferred correctly.
Dear Sir:
after some try and error. there is still no video signal output from QMTech Wukong board. here is my project setting.
If I got the data clock, h-sync, v-sync of the panel, I'll upload the data.
BR, Sanada
The installation of the module in the virtualenv fails and generates this warning:
warning: install_lib: 'build/lib' does not exist -- no Python modules to install
Running "python3 setup.py develop" works though.
Is there a project for porting litevideo on CycloneV ?
Is it a big job or just a matter of trying it?
Here is the list of current pep8 issues in this code
./litevideo/spi.py:42:80: E501 line too long (94 > 79 characters)
./litevideo/spi.py:44:80: E501 line too long (80 > 79 characters)
./litevideo/spi.py:50:21: E128 continuation line under-indented for visual indent
./litevideo/spi.py:64:80: E501 line too long (85 > 79 characters)
./litevideo/spi.py:65:21: E128 continuation line under-indented for visual indent
./litevideo/spi.py:68:21: E128 continuation line under-indented for visual indent
./litevideo/spi.py:101:13: E124 closing bracket does not match visual indentation
./litevideo/spi.py:102:17: E128 continuation line under-indented for visual indent
./litevideo/spi.py:104:17: E124 closing bracket does not match visual indentation
./litevideo/spi.py:116:13: E128 continuation line under-indented for visual indent
./litevideo/spi.py:117:13: E128 continuation line under-indented for visual indent
./litevideo/spi.py:118:13: E128 continuation line under-indented for visual indent
./litevideo/spi.py:120:13: E124 closing bracket does not match visual indentation
./litevideo/spi.py:123:13: E128 continuation line under-indented for visual indent
./litevideo/spi.py:124:13: E128 continuation line under-indented for visual indent
./litevideo/spi.py:128:17: E124 closing bracket does not match visual indentation
./litevideo/spi.py:129:13: E124 closing bracket does not match visual indentation
./litevideo/spi.py:134:80: E501 line too long (89 > 79 characters)
./litevideo/spi.py:137:80: E501 line too long (88 > 79 characters)
./litevideo/spi.py:138:80: E501 line too long (83 > 79 characters)
./litevideo/spi.py:156:80: E501 line too long (84 > 79 characters)
./litevideo/spi.py:174:22: E261 at least two spaces before inline comment
./litevideo/csc/common.py:10:9: E124 closing bracket does not match visual indentation
./litevideo/csc/common.py:11:13: E128 continuation line under-indented for visual indent
./litevideo/csc/common.py:12:9: E124 closing bracket does not match visual indentation
./litevideo/csc/common.py:29:1: E302 expected 2 blank lines, found 1
./litevideo/csc/rgb2ycbcr.py:9:80: E501 line too long (101 > 79 characters)
./litevideo/csc/rgb2ycbcr.py:11:1: E302 expected 2 blank lines, found 1
./litevideo/csc/rgb2ycbcr.py:13:13: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:14:13: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:15:13: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:16:13: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:17:18: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:18:18: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:19:15: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:20:15: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:21:15: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:22:15: E203 whitespace before ':'
./litevideo/csc/rgb2ycbcr.py:43:80: E501 line too long (84 > 79 characters)
./litevideo/csc/rgb2ycbcr.py:72:60: E261 at least two spaces before inline comment
./litevideo/csc/rgb2ycbcr.py:132:80: E501 line too long (82 > 79 characters)
./litevideo/csc/rgb2ycbcr.py:133:80: E501 line too long (93 > 79 characters)
./litevideo/csc/rgb2ycbcr.py:141:80: E501 line too long (82 > 79 characters)
./litevideo/csc/rgb2ycbcr.py:143:80: E501 line too long (86 > 79 characters)
./litevideo/csc/ycbcr2rgb.py:8:1: E302 expected 2 blank lines, found 1
./litevideo/csc/ycbcr2rgb.py:15:13: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:16:13: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:17:13: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:18:13: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:19:18: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:20:18: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:21:15: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:22:15: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:23:15: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:24:15: E203 whitespace before ':'
./litevideo/csc/ycbcr2rgb.py:31:1: E302 expected 2 blank lines, found 1
./litevideo/csc/ycbcr2rgb.py:48:80: E501 line too long (88 > 79 characters)
./litevideo/csc/ycbcr2rgb.py:92:80: E501 line too long (116 > 79 characters)
./litevideo/csc/ycbcr2rgb.py:107:80: E501 line too long (89 > 79 characters)
./litevideo/csc/ycbcr2rgb.py:108:80: E501 line too long (86 > 79 characters)
./litevideo/csc/ycbcr2rgb.py:116:80: E501 line too long (82 > 79 characters)
./litevideo/csc/ycbcr2rgb.py:118:80: E501 line too long (86 > 79 characters)
./litevideo/csc/ycbcr422to444.py:10:1: E302 expected 2 blank lines, found 1
./litevideo/csc/ycbcr422to444.py:33:80: E501 line too long (88 > 79 characters)
./litevideo/csc/ycbcr422to444.py:46:13: E124 closing bracket does not match visual indentation
./litevideo/csc/ycbcr422to444.py:53:1: E302 expected 2 blank lines, found 1
./litevideo/csc/ycbcr422to444.py:55:80: E501 line too long (84 > 79 characters)
./litevideo/csc/ycbcr422to444.py:56:80: E501 line too long (88 > 79 characters)
./litevideo/csc/ycbcr422to444.py:67:80: E501 line too long (82 > 79 characters)
./litevideo/csc/ycbcr422to444.py:69:80: E501 line too long (86 > 79 characters)
./litevideo/csc/ycbcr444to422.py:10:1: E302 expected 2 blank lines, found 1
./litevideo/csc/ycbcr444to422.py:33:80: E501 line too long (88 > 79 characters)
./litevideo/csc/ycbcr444to422.py:55:13: E124 closing bracket does not match visual indentation
./litevideo/csc/ycbcr444to422.py:63:13: E124 closing bracket does not match visual indentation
./litevideo/csc/ycbcr444to422.py:72:80: E501 line too long (84 > 79 characters)
./litevideo/csc/ycbcr444to422.py:73:80: E501 line too long (88 > 79 characters)
./litevideo/csc/ycbcr444to422.py:84:80: E501 line too long (82 > 79 characters)
./litevideo/csc/ycbcr444to422.py:86:80: E501 line too long (86 > 79 characters)
./litevideo/csc/test/common.py:9:1: E302 expected 2 blank lines, found 1
./litevideo/csc/test/common.py:29:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:37:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:38:30: E203 whitespace before ','
./litevideo/csc/test/common.py:38:31: E231 missing whitespace after ','
./litevideo/csc/test/common.py:43:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:50:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:57:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:61:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:71:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:81:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:92:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:103:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:105:15: E221 multiple spaces before operator
./litevideo/csc/test/common.py:111:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/common.py:112:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/common.py:116:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:128:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:134:80: E501 line too long (108 > 79 characters)
./litevideo/csc/test/common.py:135:80: E501 line too long (159 > 79 characters)
./litevideo/csc/test/common.py:136:80: E501 line too long (108 > 79 characters)
./litevideo/csc/test/common.py:140:5: E303 too many blank lines (2)
./litevideo/csc/test/common.py:146:47: E222 multiple spaces after operator
./litevideo/csc/test/common.py:147:80: E501 line too long (81 > 79 characters)
./litevideo/csc/test/common.py:148:47: E222 multiple spaces after operator
./litevideo/csc/test/rgb2ycbcr_tb.py:13:80: E501 line too long (86 > 79 characters)
./litevideo/csc/test/rgb2ycbcr_tb.py:15:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/rgb2ycbcr_tb.py:18:9: E101 indentation contains mixed spaces and tabs
./litevideo/csc/test/rgb2ycbcr_tb.py:18:9: W191 indentation contains tabs
./litevideo/csc/test/rgb2ycbcr_tb.py:19:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:20:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:21:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:23:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:23:80: E501 line too long (89 > 79 characters)
./litevideo/csc/test/rgb2ycbcr_tb.py:24:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:25:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:26:13: E131 continuation line unaligned for hanging indent
./litevideo/csc/test/rgb2ycbcr_tb.py:53:24: E203 whitespace before ':'
./litevideo/csc/test/rgb2ycbcr_tb.py:55:14: E203 whitespace before ':'
./litevideo/csc/test/ycbcr2rgb_tb.py:10:1: E302 expected 2 blank lines, found 1
./litevideo/csc/test/ycbcr2rgb_tb.py:12:80: E501 line too long (86 > 79 characters)
./litevideo/csc/test/ycbcr2rgb_tb.py:14:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/ycbcr2rgb_tb.py:17:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/ycbcr2rgb_tb.py:22:80: E501 line too long (87 > 79 characters)
./litevideo/csc/test/ycbcr2rgb_tb.py:53:24: E203 whitespace before ':'
./litevideo/csc/test/ycbcr2rgb_tb.py:55:14: E203 whitespace before ':'
./litevideo/csc/test/ycbcr_resampling_tb.py:14:80: E501 line too long (86 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:17:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:20:80: E501 line too long (86 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:21:80: E501 line too long (83 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:22:80: E501 line too long (83 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:23:80: E501 line too long (82 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:27:80: E501 line too long (93 > 79 characters)
./litevideo/csc/test/ycbcr_resampling_tb.py:52:24: E203 whitespace before ':'
./litevideo/csc/test/ycbcr_resampling_tb.py:54:14: E203 whitespace before ':'
./litevideo/input/analysis.py:51:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:79:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:87:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:102:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:103:17: E128 continuation line under-indented for visual indent
./litevideo/input/analysis.py:104:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:110:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:176:80: E501 line too long (80 > 79 characters)
./litevideo/input/analysis.py:183:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:184:17: E128 continuation line under-indented for visual indent
./litevideo/input/analysis.py:185:80: E501 line too long (92 > 79 characters)
./litevideo/input/analysis.py:202:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:203:17: E128 continuation line under-indented for visual indent
./litevideo/input/analysis.py:204:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:217:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:218:17: E128 continuation line under-indented for visual indent
./litevideo/input/analysis.py:219:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:239:13: E124 closing bracket does not match visual indentation
./litevideo/input/analysis.py:240:17: E128 continuation line under-indented for visual indent
./litevideo/input/analysis.py:241:13: E124 closing bracket does not match visual indentation
./litevideo/input/chansync.py:86:13: E124 closing bracket does not match visual indentation
./litevideo/input/chansync.py:90:21: E124 closing bracket does not match visual indentation
./litevideo/input/chansync.py:93:17: E124 closing bracket does not match visual indentation
./litevideo/input/chansync.py:95:80: E501 line too long (81 > 79 characters)
./litevideo/input/charsync.py:32:80: E501 line too long (88 > 79 characters)
./litevideo/input/charsync.py:33:19: E128 continuation line under-indented for visual indent
./litevideo/input/charsync.py:34:19: E128 continuation line under-indented for visual indent
./litevideo/input/charsync.py:35:13: E124 closing bracket does not match visual indentation
./litevideo/input/charsync.py:46:17: E124 closing bracket does not match visual indentation
./litevideo/input/charsync.py:49:13: E124 closing bracket does not match visual indentation
./litevideo/input/clocking.py:39:13: E128 continuation line under-indented for visual indent
./litevideo/input/clocking.py:40:9: E124 closing bracket does not match visual indentation
./litevideo/input/clocking.py:41:13: E128 continuation line under-indented for visual indent
./litevideo/input/clocking.py:42:9: E124 closing bracket does not match visual indentation
./litevideo/input/clocking.py:52:80: E501 line too long (93 > 79 characters)
./litevideo/input/clocking.py:54:80: E501 line too long (85 > 79 characters)
./litevideo/input/clocking.py:67:80: E501 line too long (88 > 79 characters)
./litevideo/input/clocking.py:68:80: E501 line too long (105 > 79 characters)
./litevideo/input/clocking.py:79:80: E501 line too long (92 > 79 characters)
./litevideo/input/clocking.py:80:17: E128 continuation line under-indented for visual indent
./litevideo/input/clocking.py:82:80: E501 line too long (87 > 79 characters)
./litevideo/input/common.py:6:20: E262 inline comment should start with '# '
./litevideo/input/common.py:7:20: E262 inline comment should start with '# '
./litevideo/input/common.py:8:20: E262 inline comment should start with '# '
./litevideo/input/common.py:9:20: E262 inline comment should start with '# '
./litevideo/input/datacapture.py:36:80: E501 line too long (93 > 79 characters)
./litevideo/input/datacapture.py:37:80: E501 line too long (90 > 79 characters)
./litevideo/input/datacapture.py:39:80: E501 line too long (81 > 79 characters)
./litevideo/input/datacapture.py:40:80: E501 line too long (93 > 79 characters)
./litevideo/input/datacapture.py:43:80: E501 line too long (107 > 79 characters)
./litevideo/input/datacapture.py:47:80: E501 line too long (93 > 79 characters)
./litevideo/input/datacapture.py:48:80: E501 line too long (87 > 79 characters)
./litevideo/input/datacapture.py:50:80: E501 line too long (80 > 79 characters)
./litevideo/input/datacapture.py:51:80: E501 line too long (93 > 79 characters)
./litevideo/input/datacapture.py:54:80: E501 line too long (104 > 79 characters)
./litevideo/input/datacapture.py:64:80: E501 line too long (94 > 79 characters)
./litevideo/input/datacapture.py:68:80: E501 line too long (89 > 79 characters)
./litevideo/input/datacapture.py:71:80: E501 line too long (94 > 79 characters)
./litevideo/input/datacapture.py:78:80: E501 line too long (94 > 79 characters)
./litevideo/input/datacapture.py:85:80: E501 line too long (94 > 79 characters)
./litevideo/input/datacapture.py:102:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:102:80: E501 line too long (83 > 79 characters)
./litevideo/input/datacapture.py:103:17: E128 continuation line under-indented for visual indent
./litevideo/input/datacapture.py:104:17: E128 continuation line under-indented for visual indent
./litevideo/input/datacapture.py:105:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:115:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:119:17: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:128:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:132:17: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:157:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:158:17: E128 continuation line under-indented for visual indent
./litevideo/input/datacapture.py:159:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:167:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:168:17: E128 continuation line under-indented for visual indent
./litevideo/input/datacapture.py:169:13: E124 closing bracket does not match visual indentation
./litevideo/input/datacapture.py:173:80: E501 line too long (81 > 79 characters)
./litevideo/input/datacapture.py:174:80: E501 line too long (81 > 79 characters)
./litevideo/input/datacapture.py:175:80: E501 line too long (80 > 79 characters)
./litevideo/input/datacapture.py:176:80: E501 line too long (80 > 79 characters)
./litevideo/input/decoding.py:18:17: E128 continuation line under-indented for visual indent
./litevideo/input/decoding.py:19:17: E128 continuation line under-indented for visual indent
./litevideo/input/decoding.py:20:13: E124 closing bracket does not match visual indentation
./litevideo/input/decoding.py:25:50: W503 line break before binary operator
./litevideo/input/dma.py:10:1: E302 expected 2 blank lines, found 1
./litevideo/input/dma.py:54:80: E501 line too long (80 > 79 characters)
./litevideo/input/dma.py:55:26: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:59:80: E501 line too long (81 > 79 characters)
./litevideo/input/dma.py:60:80: E501 line too long (92 > 79 characters)
./litevideo/input/dma.py:62:80: E501 line too long (86 > 79 characters)
./litevideo/input/dma.py:63:80: E501 line too long (83 > 79 characters)
./litevideo/input/dma.py:64:27: E127 continuation line over-indented for visual indent
./litevideo/input/dma.py:77:80: E501 line too long (80 > 79 characters)
./litevideo/input/dma.py:97:13: E124 closing bracket does not match visual indentation
./litevideo/input/dma.py:98:17: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:99:17: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:100:13: E124 closing bracket does not match visual indentation
./litevideo/input/dma.py:121:13: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:122:13: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:123:33: W503 line break before binary operator
./litevideo/input/dma.py:124:13: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:128:13: E124 closing bracket does not match visual indentation
./litevideo/input/dma.py:131:13: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:132:13: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:138:21: E124 closing bracket does not match visual indentation
./litevideo/input/dma.py:139:17: E124 closing bracket does not match visual indentation
./litevideo/input/dma.py:140:13: E124 closing bracket does not match visual indentation
./litevideo/input/dma.py:143:13: E128 continuation line under-indented for visual indent
./litevideo/input/dma.py:146:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:74:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:102:17: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:106:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:122:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:123:17: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:124:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:136:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:137:17: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:138:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:145:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:146:17: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:147:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:151:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:157:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:161:17: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:164:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:167:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:170:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:171:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:174:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:175:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:178:17: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:181:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:185:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:188:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:191:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:193:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:196:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:197:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:199:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:202:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:203:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:205:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:209:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:213:17: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:216:13: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:219:13: E128 continuation line under-indented for visual indent
./litevideo/input/edid.py:223:17: E124 closing bracket does not match visual indentation
./litevideo/input/edid.py:226:13: E124 closing bracket does not match visual indentation
./litevideo/input/wer.py:34:80: E501 line too long (83 > 79 characters)
./litevideo/input/wer.py:36:80: E501 line too long (93 > 79 characters)
./litevideo/input/wer.py:42:80: E501 line too long (92 > 79 characters)
./litevideo/input/wer.py:53:80: E501 line too long (80 > 79 characters)
./litevideo/input/wer.py:63:13: E124 closing bracket does not match visual indentation
./litevideo/input/wer.py:64:17: E128 continuation line under-indented for visual indent
./litevideo/input/wer.py:65:13: E124 closing bracket does not match visual indentation
./litevideo/input/wer.py:75:80: E501 line too long (80 > 79 characters)
./litevideo/output/common.py:15:1: E302 expected 2 blank lines, found 1
./litevideo/output/common.py:20:1: E302 expected 2 blank lines, found 1
./litevideo/output/common.py:24:1: E302 expected 2 blank lines, found 0
./litevideo/output/core.py:44:80: E501 line too long (86 > 79 characters)
./litevideo/output/core.py:45:13: E128 continuation line under-indented for visual indent
./litevideo/output/core.py:79:13: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:103:21: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:106:17: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:112:13: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:117:13: E128 continuation line under-indented for visual indent
./litevideo/output/core.py:118:13: E128 continuation line under-indented for visual indent
./litevideo/output/core.py:119:13: E128 continuation line under-indented for visual indent
./litevideo/output/core.py:121:13: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:124:13: E128 continuation line under-indented for visual indent
./litevideo/output/core.py:127:13: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:130:13: E124 closing bracket does not match visual indentation
./litevideo/output/core.py:135:10: E203 whitespace before ':'
./litevideo/output/core.py:139:10: E203 whitespace before ':'
./litevideo/output/core.py:142:1: E302 expected 2 blank lines, found 1
./litevideo/output/core.py:154:80: E501 line too long (80 > 79 characters)
./litevideo/output/core.py:204:80: E501 line too long (84 > 79 characters)
./litevideo/output/core.py:230:80: E501 line too long (81 > 79 characters)
./litevideo/output/hdmi/encoder.py:68:21: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/encoder.py:72:17: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/encoder.py:73:80: E501 line too long (80 > 79 characters)
./litevideo/output/hdmi/encoder.py:78:21: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/encoder.py:85:13: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:40:80: E501 line too long (115 > 79 characters)
./litevideo/output/hdmi/s6.py:41:80: E501 line too long (108 > 79 characters)
./litevideo/output/hdmi/s6.py:43:80: E501 line too long (96 > 79 characters)
./litevideo/output/hdmi/s6.py:44:80: E501 line too long (108 > 79 characters)
./litevideo/output/hdmi/s6.py:45:80: E501 line too long (83 > 79 characters)
./litevideo/output/hdmi/s6.py:56:17: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:57:21: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s6.py:58:21: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s6.py:59:17: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:71:21: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s6.py:72:17: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:73:21: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s6.py:74:17: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:77:80: E501 line too long (97 > 79 characters)
./litevideo/output/hdmi/s6.py:90:17: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s6.py:91:13: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:92:17: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s6.py:93:13: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s6.py:104:80: E501 line too long (84 > 79 characters)
./litevideo/output/hdmi/s6.py:117:80: E501 line too long (92 > 79 characters)
./litevideo/output/hdmi/s6.py:118:80: E501 line too long (108 > 79 characters)
./litevideo/output/hdmi/s6.py:120:80: E501 line too long (94 > 79 characters)
./litevideo/output/hdmi/s6.py:131:29: E222 multiple spaces after operator
./litevideo/output/hdmi/s6.py:131:80: E501 line too long (125 > 79 characters)
./litevideo/output/hdmi/s6.py:136:80: E501 line too long (88 > 79 characters)
./litevideo/output/hdmi/s6.py:138:80: E501 line too long (125 > 79 characters)
./litevideo/output/hdmi/s6.py:139:80: E501 line too long (87 > 79 characters)
./litevideo/output/hdmi/s6.py:145:80: E501 line too long (84 > 79 characters)
./litevideo/output/hdmi/s6.py:158:80: E501 line too long (81 > 79 characters)
./litevideo/output/hdmi/s6.py:164:80: E501 line too long (104 > 79 characters)
./litevideo/output/hdmi/s6.py:174:80: E501 line too long (80 > 79 characters)
./litevideo/output/hdmi/s6.py:179:80: E501 line too long (91 > 79 characters)
./litevideo/output/hdmi/s6.py:187:80: E501 line too long (80 > 79 characters)
./litevideo/output/hdmi/s6.py:191:80: E501 line too long (91 > 79 characters)
./litevideo/output/hdmi/s6.py:192:80: E501 line too long (80 > 79 characters)
./litevideo/output/hdmi/s6.py:213:80: E501 line too long (99 > 79 characters)
./litevideo/output/hdmi/s6.py:214:80: E501 line too long (99 > 79 characters)
./litevideo/output/hdmi/s6.py:215:80: E501 line too long (99 > 79 characters)
./litevideo/output/hdmi/s7.py:10:80: E501 line too long (85 > 79 characters)
./litevideo/output/hdmi/s7.py:26:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:27:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:28:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:29:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:30:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:31:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:32:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:33:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:34:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:35:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:36:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:38:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:39:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:64:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:65:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:66:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:67:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:68:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:69:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:70:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:71:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:72:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:73:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:74:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:76:13: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:104:17: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:105:17: E128 continuation line under-indented for visual indent
./litevideo/output/hdmi/s7.py:106:9: E124 closing bracket does not match visual indentation
./litevideo/output/hdmi/s7.py:120:80: E501 line too long (84 > 79 characters)
./litevideo/output/hdmi/s7.py:121:80: E501 line too long (84 > 79 characters)
./litevideo/output/hdmi/s7.py:122:80: E501 line too long (84 > 79 characters)
./litevideo/output/hdmi/s7.py:133:10: W292 no newline at end of file
./litevideo/output/test/core_tb.py:40:55: E228 missing whitespace around modulo operator
./litevideo/output/test/core_tb.py:75:14: E203 whitespace before ':'
When trying to build the HDMI2USB-litex-video video targets on the Nexys Video we get the following error;
CC boot-helper-lm32.o
LD firmware.elf
chmod -x firmware.elf
OBJCOPY firmware.bin
chmod -x firmware.bin
python -m litex.soc.tools.mkmscimg -f firmware.bin -o firmware.fbi
make[1]: Leaving directory `/home/travis/build/timvideos/HDMI2USB-litex-firmware/build/nexys_video_video_lm32/software/firmware'
ERROR:root:Available clock domains:
- clk100
- clk200
- data0_cap_read
- data0_cap_write
- data1_cap_read
- data1_cap_write
- data2_cap_read
- data2_cap_write
- eth_rx
- eth_tx
- eth_tx90
- fmeter
- hdmi_in0_pix
- hdmi_in0_pix5x
- hdmi_out0_pix
- hdmi_out0_pix5x
- pix1p25x
- pix5x_o
- pix_o
- sys
- sys4x
- sys4x_dqs
Traceback (most recent call last):
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/migen/migen/fhdl/verilog.py", line 327, in convert
f.clock_domains[cd_name]
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/migen/migen/fhdl/structure.py", line 707, in __getitem__
raise KeyError(key)
KeyError: 'pix5x_o'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./make.py", line 143, in <module>
main()
File "./make.py", line 127, in main
vns = builder.build(**dict(args.build_option))
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litex/litex/soc/integration/builder.py", line 168, in build
toolchain_path=toolchain_path, **kwargs)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litex/litex/soc/integration/soc_core.py", line 300, in build
return self.platform.build(self, *args, **kwargs)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litex/litex/build/xilinx/platform.py", line 39, in build
return self.toolchain.build(self, *args, **kwargs)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litex/litex/build/xilinx/vivado.py", line 212, in build
v_output = platform.get_verilog(fragment, name=build_name, **kwargs)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litex/litex/build/xilinx/platform.py", line 33, in get_verilog
special_overrides=so, attr_translate=self.toolchain.attr_translate, **kwargs)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/litex/litex/build/generic_platform.py", line 367, in get_verilog
create_clock_domains=False, **kwargs)
File "/home/travis/build/timvideos/HDMI2USB-litex-firmware/third_party/migen/migen/fhdl/verilog.py", line 338, in convert
raise KeyError("Unresolved clock domain: \""+cd_name+"\"")
KeyError: 'Unresolved clock domain: "pix5x_o"'
---------------------------------------------
See https://travis-ci.org/timvideos/HDMI2USB-litex-firmware/jobs/352035545
I'm guessing this has something to do with the split_mmcm stuff?
it seems that the following line limits the use of the litevideo for only XC6 XC7 FPGA's?
self.submodules.clocking = clocking_cls[family](pads, external_clocking)
This seems to be caused by SlotArray not assigning unique names to the slots.
Changing:
slots = [_Slot(addr_bits, alignment_bits) for i in range(nslots)]
for n, slot in enumerate(slots):
setattr(self.submodules, "slot"+str(n), slot)
setattr(self.ev, "slot"+str(n), slot.ev_source)
self.ev.finalize()
to:
slots = [_Slot(addr_bits, alignment_bits) for i in range(nslots)]
for n, slot in enumerate(slots):
setattr(slot.ev_source, "name", "slot"+str(n)) # To get unique name for each slot ev_source
setattr(self.submodules, "slot"+str(n), slot)
setattr(self.ev, "slot"+str(n), slot.ev_source)
self.ev.finalize()
Seems to fix the issue.
During horizontal/vertical blanking periods, the color signals should be at ground in order for the VGA monitor to know the baseline value.
Currently, during the blanking period, the video generator leaves prepared the next data (color) from next line, so if leftmost pixel is not zero, color bands apear while the VGA monitor adapts to the value, and thus if the screen has solid colors, they tend to black after some lines (the time constant is about 1ms):
The following trace shows the horizontal sync period (positive) and how the color data doesn't go to ground:
The correction is simply to make zero all color outputs during blanking. That was tested making the leftmost pixel always zero where solid colors appear as expected.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.