Forum Discussion
Strange effect with Stratix FPGA
Hello!
I am using a Stratix EP1S10 device on a NIOS II Development Board. I use it for VHDL programming only. That means, I don't use any NIOS stuff in my project. I made my own user configuration with which I configure the FPGA. Up to now, all works fine. Now, I have implemented a shift register in my project which works fine, too. It is 850 shifts deep and shifts a 11 bit wide vector. Parallel to the shift register I implemented some logic, which examines the contents of certain shift register parts. That works fine, too, up to the moment, when the parallel logic becomes maybe too complex. Then there are strange effects on my board I can`t explain myself. For example there is a dot in the seven segment displays on my board wich is connected to the pin D19 of the FPGA, which gets active, although I never assigned the PIN D19 in the pin assignment editor. Another effect is, that the output of the FPGA is no more compatible with the output of the simulator in Quatus II, where all works as expected. When I remove some logic off the shift register, it is all right again. I know, it is hard for you to answer that, when you don't know my project, but it could be, that somone of you had similar experience (especially with the dot, which is active although it is not assigned or somethink like that), and can give me some hints, why this happens. Greets Maik16 Replies
- Altera_Forum
Honored Contributor
Why don' t You import the Pin Assigment from a sample design for the development board You are using and modify only the Pin assignments specific to Your design. I have been working with a CYCLONE Development Board sample designs which also shows how to place the LAN Controller in a quiescent state.
When using development board to host my custom design, I found always usesful to open an existing sample design delete their logic and implement my logic; this clears all the board interfacing issues (inlcuding FPGA configuration issues) and allows me to focus on the actual design that I am trying to prototype. - Altera_Forum
Honored Contributor
Hi larsen!
Thanks for your participation to this thread! I think I identified the evildoer. It seems to be the LAN91C111 on my board. When I run my own configuration, he becomes hot as hell. When I reload the NIOS configuration with which the board was delivered (and which I use every time, I reconfigure the FPGA with my configuration), the LAN91C111 becomes hot, too, but not quite as hot, as with my configuration (I wonder how he even survived this all the time . . . ) Now, I have a problem: I looked for a pin on the LAN91C111 that says "turn me off" or something like that. But there isn't one. Instead I have to write some bits into some configuration registers I would like to be able to access, but I do not understand the datasheet of this fellow, at all (http://www.smsc.com/main/datasheets/91c111.pdf (http://www.smsc.com/main/datasheets/91c111.pdf)). Is there anybody out there, who can give me some advise, how to write a simple disable entity for this chip? Greets, Maik - Altera_Forum
Honored Contributor
Remove the clock (x-tal) and you can see the difference between dynamic + static and static power consumption. Make sure the clock is realy gone by gnd-ing the input otherwise it may pickup noise instead. Datasheets tells you the static power consumption. Maybe that can give you a hint.
- Altera_Forum
Honored Contributor
--- Quote Start --- I would set the tool for Un-used pins as inputs with Tri-state pull up. --- Quote End --- I allready did this, but this --- Quote Start --- I would see what Output pin will place that chip in turned off mode (none chip select). --- Quote End --- is a great idea. I will try this tomorrow, and see if it will work! Thanks! Maik - Altera_Forum
Honored Contributor
Since you are asking me for specifics.
I would set the tool for Un-used pins as inputs with Tri-state pull up. I would look at each IC that is attached to the FPGA. If it has the ability to present noise on the inputs, I would see what Output pin will place that chip in turned off mode (none chip select). I would then drive that output pin to the appropriate high or low level to achieve that goal. Passive input pins from passive external logic will be covered by the above un-used pins settings. That is what you should do in my 30 years of experence (humble opinion). I hope this helps. Avatar - Altera_Forum
Honored Contributor
I think, that all IOs I use are assigned right, and there should be no conflicts with other board components, because I use the so called prototyping connectors of the board for the ADC connection. The UART interface and the seven-segment display, too, do not share their resources with other componets.
Hmm, it sounds like a lot of additional work, if I have to assign every pin which is connected to an external component. The board is very complex, with SRAM, SDRAM, Eth Phy, 2 UARTS. That would be a lot of logic, I have to spend on these pins. Is there no way, to turn unused pins completly off? - Altera_Forum
Honored Contributor
All the above advise sounds reasonable.
I have found that for pre built "reference boads" it is wise to make sure that all pins that have external components connected to them ALWAYS have those pins fully assigned in the assignment editor. You need to add "extra" code to the design to properly drive outputs to pins that expect something (like your LED "." element). You need to also "catch" inputs and do something with them, anything will do. This way, every external pin will not be flapping in the wind. (OK, inputs can be ignored if the device driving them has something like a CE (chip enable) that can be driven to tell the external device to stay quiet). I hope this helps. Avatar - Altera_Forum
Honored Contributor
That doesn't sound right that it's hitting the power supply. I figured if you whole FPGA was toggling at, say >150MHz with truly random data(i.e. 50% toggle rate) you could be using too much power. Once you're in memory, it sounds like a pretty normal design. Are all the IO assigned and correct? (I know that's a loaded question). I'm just guessing something else may be using a lot of power, like IO contention. Not really sure though.
- Altera_Forum
Honored Contributor
Hi Rysc!
My Shift Register is toggling at 25MHz. (The Master clock on my board is 50MHz). It is now implemented in RAM again. I only tried to implement it into logic-elements, after endian wrote something about it. If I do so, my whole FPGA is nearly a single shift register. That does not work for me, because I need some logic besides the shift register. So finally, I advised the synthesis tool to put it into RAM again. The signals I shift through it are 11 bit wide data. And the depth of the shift register is now 630. So one can say it is a 630x11 bit shift register. Before, it was a 850x11 bit shift register. In the future I will need again the bigger one, but for now, it works as it is. About the data, one has to know that it is not every bit of the shift register 'filled' with a high value at a time. Normally, I have 4-5 11 bit words filled with data. In between them, the shift register elements are all empty. I would have never thought, that it does consume that much power. . . Besides the FPGA, my board has to drive the UART IC+line and an ADC evaluation kit at 25MHz. Maybe alltogether is to much for the power supply, although I am a little bit disappointed about the fact, that it can't handle that . . . Greets and thanks for your support! Maik - Altera_Forum
Honored Contributor
Can't you change the unused pins to Input with Weak Pull-Up or Bus Hold? That way you don't have to tie an external resistor. Of course, the light will always be on with a pull-up, but at least you'll know why.
How fast is your shift-register toggling? What kind of data is going thru it? Is it going into a RAM or registers? From your previous post, you had one with a ton of registers through most of the device. If they're all toggling at a fast rate(i.e. a fast clock and constantly changing data), you'll use a lot of power. Having it go into RAM should significantly reduce that since you're only reading/writing a single RAM and incrementing counters. Although the power supply on the demo boards should be fine for almost all designs, if you really get everything toggling at high-rates, I could definitely see that happening. Glad you're making progress though.