• Content Count

  • Joined

  • Last visited

  1. Connected resistors, as per your comment. Outputs now look fine. Thank you
  2. Are you referring to UG471? If so, I looked through the sections pertaining to TMDS_33. Just going back through it, the most pertinent section appears to be on P95: TMDS inputs require a 50ohm pull-up and no diff term resistor Bank voltage is 3V3 and TMDS is available on HR banks TMDS_33 IOSTANDARD supports OBUFDS The first point, above, isn't relevant as I'm configuring outputs. The second and third points are satisfied by the design. There are termination diagrams in the appendices, are you referring to these? Something which also crossed my mind when I first looked at this, but I don't think this is relevant for outputs? e.g. If you look at the clocking resources guide, it explicitly mentions clock inputs should be routed via clock capable pins. It's a bit vague, as it mentions 'clock capable I/O' in some places, but I think that clocks exported from the FPGA should be brought out via an ODDR + (OBUF or OBUFDS) and do not need to be connected to clock capable pins.
  3. Hi, I am experimenting with differential outputs on the Arty A7. For this, I am using the 100MHz clock and have instantiated an OBUFDS -- SYS_CLK_OBUFDS : OBUFDS generic map( IOSTANDARD => "TMDS_33" ) port map( I => CLK100MHZ, O => sys_clk_out_p, OB => sys_clk_out_n ); The .xdc file has the following -- ## Pmod Header JB set_property -dict { PACKAGE_PIN E15 IOSTANDARD TMDS_33 } [get_ports { sys_clk_out_p }]; #IO_L11P_T1_SRCC_15 Sch=jb_p[1] set_property -dict { PACKAGE_PIN E16 IOSTANDARD TMDS_33 } [get_ports { sys_clk_out_n }]; #IO_L11N_T1_SRCC_15 Sch=jb_n[1] Synthesis & implementation are fine and I can generate a bitstream, but I see no output on these pins (just 0v). FYI, if I use a single-ended output (via OBUF) as shown below, it works fine -- SYS_CLK_OBUF : OBUF generic map( IOSTANDARD => "LVCMOS33" ) port map( I => CLK100MHZ, O => sys_clk_out ); With the .xdc file constraint -- ## Pmod Header JD set_property -dict { PACKAGE_PIN D4 IOSTANDARD LVCMOS33 } [get_ports { sys_clk_out }]; #IO_L11N_T1_SRCC_35 Sch=jd[1] Any idea what I am missing? Thanks.
  4. Hi @JColvin, I think I have the correct raster operation - ropScrPaint which 'ORs' the source and destination - as this works fine when both bitmaps are at the same bit depth. So, I think this is indeed expected behaviour. Thanks very much for looking in to it.
  5. Hi Jon, Thanks for the quick reply. Apologies, I may not have been clear; I want to keep the bitmap sizes the same throughout (e.g. 320x240). The issue is when I load two bitmaps to the display. To give you an idea of the application, I have a histogram which is continually updated and is stored as a 320x240 bitmap. I have another bitmap which is the background screen, also 320x240. I use BitBlt() to render the background to the display (ROP code ropSrcCopy), and use it again to overlay the histogram (using ROP code ropSrcPaint). If both bitmaps are mono, this works fine. If both are colour, this also works fine. However, if one is mono and the other is colour, the resulting image is corrupted. So I'm wondering if overlaying mono and colour bitmaps is possible, or does the bit depth of each have to be the same? Thanks.
  6. Oops -- "loaded to noe section" should've read "loaded to one section"
  7. Hi, I am working with the PMOD MTDS display on the Arduino platform. I'd like to ask about the operation of the bit block transfer function, BitBlt(), when combining colour and monochrome bitmaps. In the example code MtdsDemo1, function MtdsTest23(), there is an example of this which has some text rendered as colour loaded to noe section of the display and some monochrome-rendered text loaded to another section. I would like to have a colour bitmap and a mono bitmap overlaid (e.g. each bitmap is the full size of the display). I'm using the ROP code ropSrcPaint to 'OR' the mono bitmap content with the colour bitmap. This causes corruption in the resulting image, however. FYI, I can successfully merge two mono or two colour bitmaps in this way, but it doesn't work with one colour and one mono bitmap. The following lines of code just outline how I'm creating and loading the bitmaps, but are hopefully enough to explain what I'm trying to do: hdsColor = mtds.GetDs(); hbmpColor = mtds.CreateBitmap(240, 320, 16); mtds.SetDrawingSurface(hdsColor, hbmpColor); hdsMono = mtds.GetDs(); hbmpMono = mtds.CreateBitmap(240, 320, 1); mtds.SetDrawingSurface(hdsMono, hbmpMono); mtds.BitBlt(hdsDisp, 0, 0, 240, 320, hdsColor, 0, 0, ropSrcCopy); mtds.BitBlt(hdsDisp, 0, 0, 240, 320, hdsMono, 0, 0, ropSrcPaint); This approach causes corruption in the resulting image. If, however, I create the mono bitmap as 16 bit, it works fine (likewise, if I change the colour bitmap to 1 bit). Perhaps this is expected behaviour, or maybe I'm missing something? Thanks.
  8. Ah, yes - thanks. I should have paid more attention to the manual! Thank you for looking into this and providing the answer.
  9. Hi Jon, Thanks for the reply. See answers, below - 1) I have the display working with the FRDM-K64F microcontroller. All is functioning well and I have been able to implement everything I need, except changing the font size. 2) I have tried running MtdsDemo1 on an Arduino Uno (i.e. using the standard code in the Arduino IDE, downloaded from the Digilent website). Looking through this sketch, it looks like it only sets the font size to hfntMedium and does not attempt to render out any text using this font. I looked at the return value from mtds.GetFont(hds) after setting the font to hfntMedium and it correctly returns 0xC3300003 (which, according to MtdsDefs.h, is the correct value). So, the Set/GetFont calls work fine - it's only when you try to render with these fonts that an error occurs. I've attached a shortened version of MtdsDemo1, where I've modified test21 (there are only two tests in this version - 1 & 21). Basically, it renders out some text using hfntConsole, then sets the font to hfntMedium and then tries to render this. Doing so causes the display to reset, as described in the original post. MtdsDemo1_short.ino
  10. Hi, I'd like to use different font sizes on the MTDS display. MtdsDefs.h defines a number of font sizes, but none of these, other than hfntConsole, seem to work. Interestingly, two different errors occur when trying to render text using these fonts, depending on the font size selected. The fonts hfntMedium, hfntLarge & hfntXLarge cause the display to go into a re-sync state. I had a look through the MTDS libs and it's MtdsWaitUntilShieldDone(), called by mtds.cpp, which times out and throws an lSyncError. The fonts hfntXSmall & hfntSmall don't cause an error, but no text is rendered to the display.