element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
RoadTests & Reviews
  • Products
  • More
RoadTests & Reviews
Blog Creating a SYZYGY board - assembling the board and testing
  • Blog
  • RoadTest Forum
  • Documents
  • RoadTests
  • Reviews
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
RoadTests & Reviews requires membership for participation - click to join
  • Share
  • More
  • Cancel
  • Author Author: Fred27
  • Date Created: 2 Nov 2020 10:10 PM Date Created
  • Views 2508 views
  • Likes 7 likes
  • Comments 9 comments
Related
Recommended
  • syzygy
  • zmod

Creating a SYZYGY board - assembling the board and testing

Fred27
Fred27
2 Nov 2020

As part of my Eclypse Z7: Zynq-7000 SoC Development Board - Review road test, I decided to try creating my own SYZYGY peripheral board. I've already documented my research into the Syzygy/Zmod ecosystem here and quickly designed a board to be sent off to one of the usual Chinese board houses for production. I have no particular affinity for any of them but decided to go for Elecrow this time and spun up a PCB with a black soldermask to go with the Eclypse Z7 and the Digilent Zmod boards.

 

The PCBs are back!image

I must admit I did the design in a bit of a hurry as I didn't want to wait ages for the boards and for this "part 2" of my road test to be too far removed from the first part. I needn't have worried. The boards were at my door with 10 days of ordering. Considering they only cost $11.58 and I received 10 boards rather than the 5 I ordered, I'm once again amazed at how good, cheap and quick it is to get your own board spun up.

 

I decided to put most of the components on the bottom of the board. The reason for this was that I intended to reflow the board in my toaster oven and thought it better to have all the surface mount components on the same side. The surface mount Samtec QTE connector has to go on the bottom, so I decided everything else would go with it and the top would be saved for the HDMI connector. This is of source also surface mount, but has some through hole lugs too.

 

This left a fair bit of empty space which I filled with a 0xFRED logo. It was fairly large as the letters are drawn with three PCB traces. I worried a little that it might be too overstated, but as they're traces under solder mask it was reasonably subtle. I think it came out fairly well. One thing I did notice is that I put "HDMI Zmod v0.1" on there and as I discussed in my previous post, this is not strictly a Zmod board as that would require some of Digilent's Zmod code. Oops. I'm hoping they don't sue me! image

 

Populating the board

First things first, I populated one of the boards. I didn't use a stencil or reflow oven for the first one. I just added a few blobs of solder paste and got out the hot air gun. It all went OK. I needed some solder wick for the 0.8mm pitch Syzygy and HDMI connectors but all in all it wasn't too bad. I suppose I was most worried about some of the physical aspects. Did the syzygy connector and mounting holes match the Eclypse Z7? Does the HDMI cable foul anything? I needn't have worried about that. It was all fine. and looked nice mounted on the Eclypse Z7 alongside the Zmod DAC. I was wondering whether my choice to put the component underneath made it look a bit bare though. Those three wires are to let me spy on the I2C comms between the host board and my peripheral. Putting all the components on the bottom doesn't make it easy to debug. Strangely, this was the first board I've ever made without even a debug LED on it either! Luckily a sharp probe tip and those vias in the middle do the job.

imageimageimage

Syzygy DNA

The first thing i decided to do was to sort out the I2C communication as required by the "Syzygy DNA" side of Syzygy. This is some reasonably simple communication to tell the host board things like what I/O voltage you need and what current you might draw. Here's where I hit a couple of small glitches.

 

Port identification

The first thing you need to do is to measure the voltage on the RGA pin of the Syzygy connector using the ADC of your microcontroller to find out what Syzygy port you're in. Unfortunately I missed a pull-up resistor on this. Not a biggie, but a minor error. Never mind. This resistor is used to let you know what I2C address to respond to. If I know I'm on port A I can just hard-code this for now.

 

I2C

In my hurry to spin up a board, I chose one of the first microcontrollers I even used - the little MSP430F2103. I checked it could do I2C and used the right pins, but what I forgot was that this tiny device uses IT's simplest USI peripheral. This means you need to handle a lot of the I2C work in software - the state machine for one thing. As the microcontroller is only dong one thing that's not too bad, but it did mean I had to dig out my old copy of MSP430 Microcontroller Basics and git down and dirty with low level I2C stuff. I found it more awkward that it should be and decided to also put this aside for now. All I seemed to manage was to interfere with the I2C comms for the Zmod in the other port. It didn't help that all the TI example code assumed it was the only device on the I2C bus.

 

I can see from the Eclyse Z7 schematic that the Syzygy port is connected directly to the Zynq pins, so I should be able to ignore these comms and quickly check that the wiring for the HDMI is right. Let's jump ahead a bit.

 

HDMI wiring

imageimage

Whilst waiting for the PCBs I knocked up a test project that uses a pattern generator to output a test pattern over HDMI. I made sure this ran OK on the Pynq Z2 and ported it over with only minimal changes to go with the different pins connected to the HDMI socket. I fired it up and... nothing. I figured there was no point spending ages on the polish of I2C and Syzygy DNA if the hardware wasn't even right, so I spent quite a while on this. An embarrassingly long time, in fact.

 

Nothing was coming out on the pins I'd connected to HDMI. I figured I must have made a mistake. I tested for ages, running PL clock signals and video timing flags out to the Pmod port so I could see what's happening. It was only when I moved one of these working test signal from the Pmod to the Syzygy port that I twigged what was happening. I knew I hadn't told Syzygy what IO voltage I needed but I hadn't realised that mattered. The IO bank used for this Syzygy port was driven from this voltage! Obvious now, but I hadn't realised they were externally powered. I assumed if my Vivado design was right then that was all that mattered.  This tiny "VADJA" label at the top of the IO bank was the key!

 

Going back to the start and not missing bits!

So, now I realised that jumping ahead to test the hardware before finishing the I2C bit was a bit of a mistake. Don't rush stuff and do it in the right order!

 

Now I'm wondering if ignoring that pull up resistor might be borking the I2C address. Sure, I know the device is in port A, but maybe the host board also monitors the voltage to see if a board is physically present. If it's not pulled up then maybe it doesn't bother starting to talk over I2C!

 

Well, I'm making progress. So far it seems that Syzygy is a little more complicated than Pmod. I might have said unnecessarily complicated, but I'm starting to see that ignoring those complications may be biting me.

 

 

Update - Jan 2021. Syzygy DNA is finally working!

So, after months (on and off) of struggling with why my Syzygy DNA code wasn't working, I've finally got that bit cracked! My code would do odd things. It would work with the debugger plugged in, but not without. I'd make some small change and it would start working. I suspected I2C timing issues. I don't like things working but coincidence but at least I could now check some other part of the design. I'd come back to it the next day and it would have stopped working again. Really frustrating.

 

Anyway, it turned out the the solder paste underneath the big ground connection on that Samtec connector must have failed to reflow properly. My mistake for using a new brand of paste on a tricky design. I'd ruled this out earlier as my continuity checks using a DMM were OK. It turns out that the pressure from the DMM lead was enough to create a contact! The ground connection via my debug probe must have done the job too. Resting a hot soldering iron on the tab long enough to get some heat into the pads below (but not enough to melt the plastic) seems to have done the trick.

 

Finally my MCU can negotiate an IO voltage and a small LED on the host board lights up. Most whoops of excitement in electronics come from an LED being illuminated when previously it wasn't. This was no exception!

 

Now onto the important bit. HDMI....

  • Sign in to reply

Top Comments

  • Fred27
    Fred27 over 4 years ago in reply to 14rhb +2
    Aaaarrrgghhh! I'm not sure whether to be happy or annoyed. That tricky bug that I've been chasing (off and on) for weeks... that "it work when I connect the debugger, but not without"... that frustratingly…
  • Fred27
    Fred27 over 4 years ago in reply to Andrew J +1
    Thanks. I think writing up your mistakes is as helpful as writing up your successes - especially if it help someone else avoid a similar problem.
  • Fred27
    Fred27 over 4 years ago in reply to 14rhb +1
    I'm making slow progress with my board. I now have code that responds to the SYGYZY DNA requests, but it's a bit flaky. I've yet to work out why. I'll be happy to send you one if I get it working. It's…
  • bartokon
    bartokon over 4 years ago

    I'm glad that you make that work image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Fred27
    Fred27 over 4 years ago in reply to dimiterk

    Damn! I'm sure I looked for something like that but didn't find it. It's not mentioned in any of the Syzygy DNA documentation - which is on 1.1 now. image

     

    That might have made my life easier. I probably would have gone for the ATtiny if the code was there already. I would still have had the solder problem but at least I wouldn't have been blaming my code instead.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • dimiterk
    dimiterk over 4 years ago in reply to Fred27

    There is code for AVR on their gitrepo. Can be easily ported to MSP430.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Fred27
    Fred27 over 4 years ago in reply to 14rhb

    Aaaarrrgghhh! I'm not sure whether to be happy or annoyed. That tricky bug that I've been chasing (off and on) for weeks... that "it work when I connect the debugger, but not without"... that frustratingly fixed but then broken again when I come back to it the next day bug...

     

    It wasn't code timing or pullups or resistor tolerances. It was a dodgy solder joint underneath the central large GND of that Samtec connector! I used a different solder paste to usual and it just doesn't seem to perform very well. Just pressing the DMM on to it to check connectivity made it work, so I'd previously checked and dismissed it. image

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • 14rhb
    14rhb over 4 years ago in reply to Fred27

    I'm sure you'll overcome the task (and learn lots along the way).

     

    Very kind of you to offer one of your boards - but I also like the challenge of making a board from scratch and in the space of my two posts I've ordered some Samtec connectors (QTE-020-01-F-D-A). However I may look at getting my design printed professionally as that really is a low cost - it isn't worth me trying to heat my etchant up to working temperature, let alone standing in the shed freezing whilst aerating the tank with an old bicycle pump. Plus when you make your own there is always that sinking feeling as thin tracks start to dissolve whilst other areas are still not completely etched image.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube