Science topic

FPGA Programming - Science topic

Explore the latest questions and answers in FPGA Programming, and find FPGA Programming experts.
Questions related to FPGA Programming
  • asked a question related to FPGA Programming
Question
9 answers
Hello Everyone, I want to perform division operation in Verilog - HDL. Please suggest me an algorithm for division in which the clock cycle taken by division operation is independent on input. That is for division of any number a (a can be any number) by b(b can be any number),same number of clock cycle wil be taken by division operation for different set of a and b.  
Relevant answer
Answer
Here is a useful link that I found, with the block diagrams and Verilog codes
  • asked a question related to FPGA Programming
Question
6 answers
Hello everyone, can we use python as a programming language for FPGA? thank you
Relevant answer
Answer
Even though Python is not a concurrent language as VHDL or Verilog, you may use MyHDL which is a Python to VHDL/Verlilog converter. I never tested this converter, but here are the references: https://en.wikipedia.org/wiki/MyHDL and http://docs.myhdl.org/en/stable/manual/conversion.html
Regards,
  • asked a question related to FPGA Programming
Question
14 answers
Hello Everyone,
I started learning VHDL and FPGA Programming. I have watched tutorials regarding this, but that were just basic concepts.
Can someone please suggest me some good books for that?
I shall be very thankful for that.
Thank you!
Relevant answer
Answer
Interesting -following .
  • asked a question related to FPGA Programming
Question
3 answers
I am new to FPGA programming I need to use Intel Quartus for my project.
Relevant answer
Answer
  • asked a question related to FPGA Programming
Question
4 answers
I want to implement a 5 input and 2 output combinational logic using single 5x2 LUT in vertex 5 or vertex 6. Is there any way to implement that?
  • asked a question related to FPGA Programming
Question
5 answers
Hi all,
Is it possible to read-back from an already programmed FPGA? If possible, kindly explain the technique with EDA-CAD tool support for this operation.
Thanks in advance.
Relevant answer
@ Sumathi Gokulanathan
Not only you can read what you downloaded in the FPGA, which is known a readback configuration, but you can also readback what actually is running on the FPGA, with readback capture. Both are availabe from Xilinx from many years ago. The first information is actually what comes from what you have in your hard disk (the bitstream), and this information is saved in the "configuration memory" of the FPGA. The second information is read from actually the memory elements in the FPGA (flip-flops, BRAMs and LUTRAMs), you cannot read combinational functions, and this information can be capture on a single rising edge of the clock, and then save that information in a file. You may read as an example the UG191 document (Virtex-5 FPGA Configuration User Guide) from Xilinx for old Virtex5. It is the most complete document about configuration the FPGAs from Xilinx. For newer families, you can find similar documents. Also, you may read my research papers about this topic.
  • asked a question related to FPGA Programming
Question
3 answers
I want jpg to bmp converter module in my vhdl project.
How can i write this? and where should i started?
Relevant answer
Answer
JPG format is too intricate, coding hardware to handle it is not trivial. If this is an undergrad project, you are shooting too high.
There is however a middle-ground solution. Use a softcore (e.g. microblaze) and a memory, those two fully coded in vhdl/verilog. Then write software that runs on the softcore and that software will do the actual work of parsing and understanding the JPG format.
  • asked a question related to FPGA Programming
Question
12 answers
Relevant answer
Answer
Most IoT applications require a processor core, memory, networking chip (BLE/WiFi/Zigbee etc.) and a controller to actuate external devices. The processor core in IoT can be replaced by FPGA. FPGA could be coupled with an ARM processor to leverage higher-level software functions such as Web servers, if higher level of processing is required. For more information of FPGA in IoT, read the following article: “Sensor Systems Based on FPGAs and Their Applications: A Survey”.
  • asked a question related to FPGA Programming
Question
1 answer
hi i need help to fully implement an USRP like B210, but ettus site is a little complicated, can i change the FPGA program by HDL language as i want?
thanks for your experiences.
Relevant answer
Answer
i did not understand what you want do exactly
  • asked a question related to FPGA Programming
Question
1 answer
I have developed a new interferometry system that works with an atomic clock. Now I want to unwrap my detected signal by an FPGA program that should be timed with the atomic clock. The question is whether I can use a myRio instead of an FPGA or not.
Relevant answer
Answer
I think you cannot compare a FPGA chip with MyRIO.
A FPGA is a gate array where one can write the logic connections in a program written in VHDL development platform. These are the silicon chips, bare silicon chips!
MyRIO, in contrast is an embedded system that has an FPGA as a system component, but mainly wired around an ARM microcontroller with various analog and digital I/Os.
If you are talking about the interferometer for cross correlation of the input RF signals with various phase differences, a dedicated FPGA chip from a suitable vendor such as Xilinx, Altera etc. would be an ideal solution.
Excuse me for my own interpretation that by interferometry you meant the radio interferometer used to detect distant radio objects in the sky, a radio astronomy business!!!
  • asked a question related to FPGA Programming
Question
1 answer
Compare readback data to the RBD golden readback file or compare readback data to the configuration BIT file? and how to perform the comparison?
Relevant answer
Answer
I also have that doubt. If someone answers you, you'll be helping them with that doubt.
  • asked a question related to FPGA Programming
Question
5 answers
I need to develop an algorithm which runs on microblaze softcore and scans the FPGA device and provides free resource information (resource : FF/register/mux//BRAM/DSP)
Relevant answer
Answer
  • asked a question related to FPGA Programming
Question
7 answers
I want to do stereo vision, and I have a FPGA board DE1-SOC, but I dont know what type of camera is better, I always have used a webcam with my laptop, but I saw other FPGA proyects with different camera interface. thanks for helping.
  • asked a question related to FPGA Programming
Question
9 answers
Does anyone know how to do this or have a useful link? I have tried downloading it from Mathworks but I can't seem to download it.
Relevant answer
Answer
By AccelDSP Synthesis Tool
  • asked a question related to FPGA Programming
Question
1 answer
Dear all,
Hello
I have a question on "Online" VS "Offline" learning methods. In my thesis I have already simulated an "Online" method to train an RBM to develop a deep model (a DBN network) which is consisted of LIF neurons and uses spikes to train and test the model.
In my simulation with "Online" I mean that the model uses same platform for train and test. Indeed the model:
  1. Can be trained for any type of applications.
  2. The weights will be adjusted during the train process with input training spikes.
  3. and, in contrast with the "Offline" method which uses the trained weights (that have been adjusted and transferred to the test platform), the "Online" method uses same network for train and test.
Here, I want to know what the project means with "Online"? (Dose it mean same as what I have done in my thesis?)
Thank you very much.
Sincerely yours,
Mazdak Fatahi
Relevant answer
Answer
On-line learning in the said project is about learning on the go. Whenever there is a new situation the neural (network) will improve its knowledge by learning the additional knowledge to handle a new situation. Offline is more about static where a model is trained in the start with all the possible/available situations of the environment and then it is deployed. 
In other words, post-deployment need-based (re)training of model during its lifetime, as the new situations arise, is termed as on-line training. The aim is to make a model adopt autonomously to cope with such cases. 
  • asked a question related to FPGA Programming
Question
7 answers
I am struggling in implementing image processing algorithms on FPGA. If anyone has tried implementing DCT, DWT on an FPGA please help me out.
Relevant answer
Answer
 For the DWT transform implementation, in case you are using Xilinx FPGAs, you can intantiate the  FFT  as well as complex multipliers IPcores. I suggest you to adopt fixed-point format for your arithmetic operations. 
  • asked a question related to FPGA Programming
Question
2 answers
Hi all,
Presently, I am trying to program FPGA in USRP E310 for MIMO application.
This is the link of its online datasheet.( https://www.ettus.com/content/files/USRP_E310_Datasheet.pdf )
I am trying to edit the FPGA program in verilog as per my requirement. I have downloaded the open source code from Github (https://github.com/EttusResearch/fpga/tree/master/usrp3/top/e300) and building the bitstream from source. Later, I upload the bitstream to FPGA using uhd_usrp_probe command.
So far, I could toggle the frontend LEDs of USRP E310. I am trying to transmit Logic1 signal to one of the Transmitter ports. However, I can not see any output on the oscilloscope. Is there any possibility that frontend of USRP is not configured properly? if yes then, How to configure the USRP to transmit and receive the signal?
I wish to achieve the objective by only FPGA programming without using Gnu radio or any other software.
Kindly guide me if I am doing something wrong. It would be great if you can list down other data ports to be controlled.
Please tell me if my approach is correct and steps to be followed to program the FPGA correctly.
Any suggestions are welcome.
Relevant answer
Answer
I think you need to localize your problem first, and make sure each step gives you the valid result. It could be many possibilities from this point.
Cheers
  • asked a question related to FPGA Programming
Question
3 answers
Hope that all of you will be fine.I am trying to implement the motion estimation algorithm(block search) for video compression in FPGA.I am trying to implement memory reusability concept but I have a problem in reading column I can read row of memory in one clock but I can't read column in one clock.Can anyone suggest any method for reading column in one clock.Thanks in advance
Relevant answer
Answer
it seems like you need to use matrix buffer which mimic the memory 48x48. You need to ensure the clocking period to comply the design specification. Or if you need those data row and column at the same moment, you can copy the memory data into 2 identical memories, one with transposed format.
  • asked a question related to FPGA Programming
Question
3 answers
Hello ;
I have Zybo board, i write my code using Vivado hls (C or C++).
My problem is here,
I need to know how i can stock a big matrix( 256*256 for example ) in Zynq using Vivado hls.   After how i can manipulate this matrix?
  • asked a question related to FPGA Programming
Question
15 answers
Vibation analyzer in Measurement, Diagnosis and Speech Recognition use a state machine for event-driven control. Which programming language is the best for a software-state-machine in event-driven audiosignalprocessor?
Relevant answer
Answer
Sir,
Everyone is best with the language they know the best. You mentioned a state machine, I would suggest LabVIEW using a Queue Driven State Machine (QDSM) approach. In this approach, you dedicate a Queue to each major function (GUI Input, GUI Output, File input, File Output, Data Acquisition, Preprocessing data, processing data, report generation, etc). Each of these Queues will be able to communicate with each other queue through queue commands or events. The entire project could have a script queue that would allow it to be scripted from a text file (something I often do to allow reusability of the code).
I find that I can handle projects with over a thousand subroutines / SubVIs  by myself using this method. So little outside help is needed once you get some experience with it.
Good Luck!!!
  • asked a question related to FPGA Programming
Question
5 answers
sir, I am trying to do following -
I am giving a signal x(t) as input which has 1000 samples.(i have taken one signal and samples it using the matlab and got the points in form of integars)
Now i have extracted the local maxima and minima of that signal.
By using local maxima i have calculated the upper envelope by using linear interpolation and same i have done with local minima to calculate the lower envelope and then i have taken the average of the upper and lower envelope and have got a signal m(t)
now i have to calculate a new signal h(t) which will be
h(t) = x(t) - m(t)
I have to repeat all above three times, means now again h(t) will be the input signal,
x(t) = h(t)
How to repeat the steps? I have written the code separately for each step. Should i use FSm? If i am going to use FSMs then how can i instantiate the modules in FSMs? Please suggest. I ma in big trouble
Relevant answer
The best way to solve your problem is using Mealy FSMachines, becouse the change of the state depends of the imput values. In this case the imput values (true/false) can be the convergence criterion and the termination criterion.
  • asked a question related to FPGA Programming
Question
4 answers
I want to implement a circuit in Verilog but one of its inputs Is n-bit and based on that input the number of instantiated modules will be vary, so can I create an array of instances that its size will be calculated based on the width of the noted input ?? or are there any ways other than using arrays to do that at all ?? 
Relevant answer
Answer
Most simulation, synthesis, and other tools now support the "generate for loop" that's already been mentioned. The alternative if you have older tools is called an "array of instances." It looks something like this:
parameter N = 8;
output [N-1:0] dout;
input [N-1:0] din;
input [1:0] cntl;
mysubmodule [N-1:0] sub_inst (.Z(dout),.D(din),.C(cntl));
For this example, assume the submodule's Z and D are single bit and C is two bits wide. Connection signals that are the same width as the single instance port width (C in this example) are connected together to all instances, while those that are different (i.e. wider) are bit sliced to each instance. So this example unrolls to the equivalent of the following:
mysubmodule sub_inst0 (.Z(dout[0]),.D(din[0]),.C(cntl[1:0]));
mysubmodule sub_inst1 (.Z(dout[1]),.D(din[1]),.C(cntl[1:0]));
mysubmodule sub_inst2 (.Z(dout[2]),.D(din[2]),.C(cntl[1:0]));
etc...
  • asked a question related to FPGA Programming
Question
7 answers
did any one have a UCF file for FPGA xillinx model zynq 7000
iam using ise to program this fpga my code is working will but in mapping process it is stop because it needs ucf file for  zynq 7000
Relevant answer
Answer
You can contact coreEl , Bangaluru,India
  • asked a question related to FPGA Programming
Question
6 answers
Hello Everyone,
For my project work i have to calculate the inverse of a matrix using verilog for my project work. Any suggestion or anyone who have already done this in verilog?
Relevant answer
Answer
Your question is not well framed. What you want to design is HARDWARE for matrix inversion using Verilog as an HDL. Verilog is not a programming language.  You may want to ask why one may want to invert a general matrix in the first place. Is it for solving a set of linear equations? Can there be an alternate method for solving a system of linear equations? You will probably benefit by looking at the work on systolic arrays.
  • asked a question related to FPGA Programming
Question
8 answers
A real time visual attention system based on the human visual attention, it's better to use a only a FPGA, GPU or FPGA+dual core ARM?
Relevant answer
Answer
The key to succeed in this kind of project is to properly partition the application, which blocks will be executed in the dual core ARM and which blocks will be executed in the FPGA fabric. You must know the formulas of your algorithm(s) and see if they show dependency or not with respect to time. If algorithm(s) do not show such a dependency, they can easily implemented in the FPGA using VHDL. If the algorithm show dependency, you must look for ways how you can convert a serial algorithm in a parallel version and take advantage of languages such as VHDL. Another option is to write high level language as C/C++ and use OpenCL implementation from Altera or Vivado HLS and see what hardware produce, but note both OpenCL and Vivado HLS have limitations, and not sure if the hardware those tools produce will be efficient. Finally, use the dual core ARM just as a control unit, to start/end  tasks in your algorithm.
  • asked a question related to FPGA Programming
Question
3 answers
     
i need to do a project about partial reconfiguration in fpga. i use a ise 14.2 software in my pc, when i run planahead and then try to make a new project, the partial reconfiguration enable option is not in the step two that should be, how i can solve this problem?
Relevant answer
Answer
I would be most interested to know how you get on.
I tried doing Partial Reconfiguration for the Virtex 6, but hit a problem that I couldn't make the reconfigured area bigger than a single clock region. As we wanted to reconfigure everything but the PCIe interface used to communicate with the chip, this was as show-stopper bug. As Xilinx have stopped supporting PlanAhead in favour of developing Vivado and Virtex 7, they weren't prepared to fix this bug in PlanAhead.
As we had paid for a partial reconfiguration license that we couldn't then use due to this bug in PlanAhead, we were pretty annoyed about all this.
  • asked a question related to FPGA Programming
Question
3 answers
I am implementing raddix 4 fft on xilinx virtex 6 fpga. For that I tried some scaling schemes but I did not get satisfactory answer. so please suggest some good scaling scheme for that.
How to implement rounding in fpga program?
Relevant answer
Answer
Thank you so much sir for your help. Your work is really very helpful to me..
  • asked a question related to FPGA Programming
Question
6 answers
I want to execute the encryption algorithm on ML 506 board.So how can I give inputs to board and how can I receive the output from the board. In some papers they mentioned it is possible using HYPER TERMINAL. Can anyone know this?
Relevant answer
Answer
If your purpose is to conect your crypto setup so you can automate your analisys, It is not something you will find a ready-made solution. First, as Bhoopal has said, it is important to know if you will need to read some information that can not be made available as an input or output of the FPGA. For instance, if you are willing to make a DPA attack some way to receive power data must be available. In this case the problema is very different and you will need a special board with external circuitry to read this data. Assuming you only want to feed plain text to your circuit and get the encripted data out you will have to make two things: 1) First you have to design a block (using some HDL of your preference) that will receive octets and assemble the input word of your crypto block (for instance 64bits, 128bits, etc, depending on your algorithm). The same will have to be made for your outputs: a block will take the words and serialize then in groups of eigth bits (octets). Since this "connection block" will interface to your design it must be custom made by you. 2) You must include a UART that will take each octet and transmit serially, and also will receive serially and convert data to octets. Fortunatelly, a UART is a ready made block and you will find many in the Opencores.org as Maryam said. You can use a very simple one (I believe there is one called tinyUART that works well). Usually to send data your "connection block" will provide one octet, sinalize some 'send' input of the UART and wait untill the octet is sent (there is always a UART pin that will sinalize when ready somehow). After that, it will send the next octet and so on. To receive data, the UART will indicate in a pin that a octet has arrived and your "connection block" will read the octet from another set of pins. If you choose a simple UART and keep your communication protocol simple the "connection block" is a relativelly small state machine and a few registers. This proccess does, however, recquires some experience with HDL and FPGA. If you choose a SOC FPGA with internal microprocessor core there is an alternative: you can map your cryptographic block inputs and outputs to memory and use the development tools of the system to access the internal memory. There are different procedures to to this in each manufacturer tool and it usually requires the inclusion of some sort of predefined IP core in the system assembly tool (f.i. Qsys in Altera) .  Although I think using a UART may be better if you are not used to your SoC development tool, there are advantages to each approach.
  • asked a question related to FPGA Programming
Question
8 answers
i use xilinx vivado 2014.4. While declaring the inputs and outputs if i mention a port as inout ., a type mismatch error occurs.But if i replace inout with buffer the error is cleared.Why does it happen this way.My application requires a port to act as input once and later it should act as an output.
Relevant answer
Answer
In VHDL it is not possible to read a output (signal out in entity). Then you have the type buffer, with is a output, but it is possible to read. But iti is two problems:
- One signal declared as buffer can not be connected to a signal out.
- buffer is a reseved word in some tool, like Xilinx. That is a special component for the clock signal! Michmach
Now, a signal declared as inout is a realy pin used as input and output. You can read this signal. But that use a three-states buffer. If you want only read a output signal, you need to defined a internal signal:
on entity:  output_to_read_o : out std_logic
on architecture:  
  signal output_to_read_s : std_logic
you need to assign output_to_read_s instead the output output_to_read_o and you assign output_to_read_o <= output_to_read_s; Then you can read the internal signal. You get the same fonctionnality as the buffer but without error.
You can the explanation in french in my presentation on page 29 to 31:
  • asked a question related to FPGA Programming
Question
1 answer
I am implementing raddix-4 DIF generic algorithm (N = 64,256,1024,4096,16384) on xilinx virtex-6 fpga. I have got two schemes for the twiddle factor generation for that.
1) generate sin and cos by cordic and store it in memory and call it in the process to multiply with the addition of inputs. In this I can do parallel tasking to increase speed but multiplication increases vector length drastically.
2) use cordic rotation for complex multiplication. This will not increase vector length but will reduce my speed. Xilinx CORDIC ip core takes phase input in 2QN formate but my maximum multiplication (2*π*k*n/N) answer lies in 3QN formate (around -4.71). So how can I solve this problem?
Relevant answer
Answer
If I understand correctly, you have the problem, that you give the DSP48s a 18bit and a 18bit vector and get out a 36bit answer?!
I am doing the same on our system and I would recommend looking at the input and  output. Our sine and cosine for example are always < 1. In consequence even though the tools will give you a 36bit output the top bits will always be 0, so you can just chop them off(be careful not to chop sign bits).
The bottom bits are more a question of what the accuracy of your inputs is. Generally if the inputs are only accurate to 18bits, then you do not need to keep 36bit, but can chop off at least down to 20bits without increasing the error on the output significantly (all your are essentially doing is chopping off the already erroneous bits and thus only changing the nature of the error).
Hope this helps.
  • asked a question related to FPGA Programming
Question
3 answers
I wan to see output FFT through serial port from fpga to computer. How can I do that? Want to implement uart. How can I get output in computer?
Relevant answer
Answer
Rabbia,
It all depends on the bandwidth you want between the FPGA and the computer. For moderate bandwidth, typically done is following:
- Implement an SPI interface on the FPGA.
- Use FTDI device (look for it on the internet), to translate SPI to PC USB.
  • asked a question related to FPGA Programming
Question
22 answers
what are the parameters and conditions which have to be considered for one  to decide whether to use a micro-controller or an FPGA as a processor?
Relevant answer
Answer
The main and the most significant difference between the microcontroller and the FPGA is that FPGA doesn’t have a fixed hardware structure, on the contrary it is programmable according to user applications. However processors have a fixed hardware structure. It means that all the transistors memory, peripheral structures and the connections are constant. Operations which processor can do (addition, multiplication, I/O control, etc.) are predefined.And users make the processor do these operations "in a sequential manner" by using a software, in accordance with their own purposes.
Hardware structure in the FPGA is not fixed so it is defined by the user. Although logic cells are fixed in FPGA, functions they perform and the interconnections between them are determined by the user. So operations that FPGAs can do are not predefined. You can have the processes done according to the written HDL code "in parallel" which means simultaneously. Ability of parallel processing is one of the most important features that seperate FPGA from processor and make it superior in many areas.
Processors are generally more useful for routine control of a particular circuits. For example, using FPGA for simple functions such as turn on and off any device from a computer may be overstated. This process can be easily done with many ordinary microcontroller (PIC series, etc.). However, FPGA solution is more reasonable, if you want to process on a high-resolution video data on the computer.
Because video processing requires processing large data in high speed and make these types of applications are very suitable for FPGA that is capable of parallel processing.
Since the user can determine the hardware structure of FPGAs, you can program FPGA to process larger data with few clock cycle.
Whereas this is not possible with the processor. Because data flow is limited by processor bus (16-bit, 32 bit, etc.) and the processing speed.
As a result, applications that requires more performance such as intensive data processing FPGA has come to the fore, and processor / microcontroller has come to the fore for routine control operations.
Nevertheless, processors / microcontrollers can be embedded into the FPGA since they are logic circuits in fact.
Thus it possible to define and use processor and user-specific hardware functions on only one chip by using FPGA. This solution gives engineers the oportunity to control the hardware because of its great flexibility.
You can modify and update whole design (FPGA on the processor and other logic circuits) by only changing the code on FPGA, without any change on circuit board layout.
In this way, you can add different functions, improve performance and make your design resistant of time without having to redesign the cards.
  • asked a question related to FPGA Programming
Question
10 answers
Thanks in advance for your replies.
Relevant answer
Answer
As far as I remember there is a paper that covers how to obtain the netlist from the bitstream: "From the bitstream to the netlist"  by Jean-Baptiste Note and Éric Rannaud (http://dl.acm.org/citation.cfm?id=1344729) or https://www.researchgate.net/publication/200065272_From_the_bitstream_to_the_netlist
Another paper is "BIL: A tool-chain for bitstream reverse-engineering" by Florian Benz et al. (http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6339165). You can get the open source of the project in the following URL: https://github.com/florianbenz/bil/
Hope this helps
  • asked a question related to FPGA Programming
Question
13 answers
I used the xpower analyzer to estimate both dynamic and quiescent power consumption of my design, but when I performed it for different codes, I got the same value for all. I did the .pcf and .saif files uploads, but I don't know how to upload the settings file, i.e. I don't know how to generate the settings file. Am I missed some part of the procedure?
Relevant answer
Answer
Hi Sumathi Gokulanathan,
Let me first tell you the simple procedure of using the Xilinx XPower Analyzer (for understanding) and then some information on that.
Implement the top module using the Xilinx ISE
Open the XPower Analyzer listed in the Place and Route tab of the Design sub window
After the design gets loaded 100%, in the 'Report Navigator' sub window of the XPower Analyzer, click on the 'By Clock Domain' listed in the 'Details' tab.
A list of the clock signals and the clock driven synchronous signals appears in the window pane, by the side if the 'Report Navigator'.
If your design uses clock, change the value of the Frequency of the clock, in the concerned field. (The default value given is 0 MHz)
After changing the clock frequency to the desired value, click on the 'Update Power Analysis' icon in the Toolbar.
After the update gets finished, click on the summary, listed in the 'Report Navigator', to get the updated power values.
NOTE: To measure the power values at different frequencies, restart the XPower Analyzer to get correct values. If you change the frequency many times at a single run, the power values get added up as the algorithm (according to my knowledge) preserves the previous values of power to add them in calculating the power values of next frequency.
All the best,
Regards
NP.
  • asked a question related to FPGA Programming
Question
8 answers
As you know, conventional nonlinear controllers are works based on system's dynamic, so how we can design FPGA-based nonlinear controller?
Relevant answer
Answer
You can use the BlockRAM (i.e. for Xilinx Spartan series) as registered ROM memory by tying the write-enable input to low. You can do this by directly inferring the BlockRAM as ROM in the code and fill-in the coefficients directly or use the Xilinx's CORE Generator system where you can generate a special ".coe" file which initializes the ROM contents and assign it. For example you can check the XAPP463 "Using Block RAM in Spartan-3 Generation FPGAs" application note. Then you can use the memory address as the matrix cell index and the memory contents at this address as matrix cell value. And maybe this will be the fastest and easiest way. And you have various options for the memory organization (for example 4kx4, 1kx16, 256x72 and many others) so you can either write normalized values for that Sine and Cosine functions and use them as integers or write fixed-point arithmetic.
Some example of how to use the RAM/ROM can be found in "FPGA Prototyping by VHDL Examples" by Pong P. Chu (chapter 11.4.3 "ROM"). (His book is also avalaible for Verilog.) I used Xilinx and Verilog but other manufacturers, like Altera and Lattice, offer similar possibilities of implementing a ROM.
If your matrix changes dynamically it may be worth giving a try of the COordinate Rotation DIgital Computer (CORDIC) algorithm which is capable of evaluating many elementary trigonometric functions including Sine and Cosine. I have not personally used it but I know there are few free versions of CORDIC cores at opencores.org website.
Hope this can help you.
Best regards,
    Yassen
  • asked a question related to FPGA Programming
Question
11 answers
I am using SPARTRAN XC3S50 PQG208EGQ1117 D4238638A 4C FPGA for synthesis and simulation process. Where will the speed of the circuit be shown?
Relevant answer
Answer
One more thing
Timing report after synthesis is not very accurate.
It would be much better to take timing results after place and route. these values tend to be more realistic, as it is estimated after implementing the design routing for the target FPGA.
Good luck
  • asked a question related to FPGA Programming
Question
10 answers
Port mapping refers to the concurrent statements and process refers to the sequential statement. If there is a data dependency between the blocks of the concurrent statements, each block itself is a concurrent statement and the entire flow becomes sequential because each block output goes to the input of the next block. In that case why can't we include these concurrent statements inside the process? I am confused and I don't know the reason for this.
Relevant answer
Answer
Port map is only used for physical signals and while process is a virtual operations that use variables which requires zero time to execute ( concurrent statements)
  • asked a question related to FPGA Programming
Question
7 answers
I want to dump my project code to FPGA board. Please can anyone provide me the input pin numbers to Xilinx SPARTRAN XC3S50 PQG208EGQ1117 D4238638A 4C?
Relevant answer
Answer
After performing the synthesis, a detailed report of the synthesis will be generated, just just scroll down the report, you can see the maximum clock frequency supported by the your system.
  • asked a question related to FPGA Programming
Question
4 answers
Type of Image Processing Algorithms suitable for FPGA/ASIC.
Relevant answer
Answer
Window-based operations are very good candidates for hardware implementation. You can organize the incoming pixel stream as shown in this article:
This opens a way for the implementation of a lot of image image filtering and feature detection algorithms.
  • asked a question related to FPGA Programming
Question
11 answers
I have done programs with FPGA using VHDL. Now I want to to do Dynamic Partial Reconfiguration. Where do I start?
Relevant answer
Answer
Hi folks, just to clarify, with PlanAhead you may implement partial bitstreams, but the partial reconfiguration (PR) flow given by PlanAhead provides only the initial partial bitstreams for the partially reconfigurable module (PRM). Even though Xilinx says that you can change the functionality of PR regions (PRRs), by dynamically download partial bitstreams on the same PRR, I consider that dynamic partial reconfiguration is more than that. Dynamic PR allows you to modify the partial bitstreams without going through the long PR flow. You may search literature about this topic, and take a look at my publications. Regards,
  • asked a question related to FPGA Programming
Question
8 answers
I want to use synopsys/cadence tools such as synopsys design compiler, synopsys prime time, cadence SoC encounter for place and route and synopsys tetramax ATPG. Are any of the mentioned tools freely downloadable?
Relevant answer
Answer
I do not think it is possible to download them for free. But many be you can interact with the application engineer and get some help from them.
  • asked a question related to FPGA Programming
Question
8 answers
I am doing a project related to image processing concept. I developed the code in Impulse c language. I can implement my designs in Spartan 3 Tyro plus (XC3S200) FPGA using microblaze processor. Is it possible to simulate the same in any of the simulation software (XPS/SDK, Model sim, ISIM, etc.)?
Relevant answer
Answer
More details I will mail you by evening
  • asked a question related to FPGA Programming
Question
3 answers
I am doing reed solomon codes in verilog and I need some help in designing euclidian block.
Relevant answer
Answer
The Theory is in MacWilliams and Sloane; check also McEliece theory of Information and coding. This being said implementation is probably a pain.
  • asked a question related to FPGA Programming
Question
2 answers
I want to know about Basic Built-In-Self-Repair systems for communication protocols in Verilog HDL. How I can start one?
Relevant answer
Answer
No..I mean the next level of Built-In-Self-Test...Which is Built-in-self-repair..I have been working on Built in self test for past years....Now I want to work on Built inf self repair.
  • asked a question related to FPGA Programming
Question
3 answers
Dear All,
Please let me know what the relation is between the number of slices used in FPGA and maximum frequency. I saw that if the number of used slices is increased, the maximum frequency along with throughput is increased. Can anyone tell me why this happens? Why is the maximum frequency increased with respect to the number of slices used?
Relevant answer
Answer
Thanks to all. I got my Answer. It's just a coincident. It's all because of my logic and number of LUTs used.
  • asked a question related to FPGA Programming
Question
8 answers
I am working on project of FPGA Based Face recognition.
Relevant answer
Answer
Hi..
There is no such a tool to convert matlab code into VHDL code.. Eventhough, if it is, it will produce inefficient code.. not all the matlab generated VHDL codes are efficient. its better to try it in vhdl itself, instead of conversion.
  • asked a question related to FPGA Programming
Question
7 answers
Are there any designs or algorithms that reduce the timing in the dynamic reconfiguration of blocks in an FPGA ?
Relevant answer
Answer
In order to answer, I will use Xilinx terminology. Sorry if you plan to use a different technology, you will probably be able to adapt some issues/terms/techniques.
Reconfiguration speed is dependent on:
- How many frames you need to write. Of course, frame length is also important. In modern Xilinx FPGAs, frame height corresponds to one clock region, but this is family-dependent (16 CLBs in Spartan-6 20 in Viertex-5, or 50 in Zynq).
- Which port you use. The fastest is the ICAP, which let the FPGA to reconfigure itself from the internal logic.
- The ICAP can be overclocked in some families (See Claus paper in ARC 2010), so time might be reduced.
- With heavy ICAP bandwidths, the provision of dato into the ICAP becomes a problema. If data to reconfigure is very small, think about having it in BRAM. If it is larger, you might perhaps off-line download the dynamic bitstream content from a flash into a DDR or similar, and by using DMA Access, read directly from there and put it into the ICAP. If you need to directly download from a flash, a parameter in the header determines the clock speed to use. Try to accelerate it as much as your design supports.
- Having compressed bitstreams helps for complete reconfiguration (i.e. at boot time), but it is not that useful for partial BSs.
- You may also think about Reading from the ICAP, relocate the bitstream by changing the addressing, and write again. This method does not impact memory utilization bandwidth, but Reading through the ICAP does not permit that much overclocking as when writing.
In ReCoSoc 2012 we have a paper on providing partial dynamic reconfiguration into a Spartan-6 device. Also, we show that, the fastest, the less energy consunption. In DSD 2010 we report the use of a peripheral for fast reconfiguration. You may also read articles form Michael Hubner or Jim Torrsen, or the above mentioned from Christopher Claus.
  • asked a question related to FPGA Programming
Question
1 answer
How do you make the model?
Relevant answer
Answer
for modeling you can use MATLAB-Simulink, if you want to implement it into FPGA you need either separate the analog part from the design (off-chip components) and synthesize the rest into the FPGA chip. or you need to look for fully digital alternatives. The idea is that you can't control any of the gates parameters (e.g. voltage level) and thus you can't implement analog circuit.
  • asked a question related to FPGA Programming
Question
2 answers
Its regarding fpga based implementation of eye tracking system.
Relevant answer
Answer
check this great resource for all FPGA projects, they have various image\video processing projects
  • asked a question related to FPGA Programming
Question
1 answer
Its regarding FPGA implementation of OFDM transmitter.
Relevant answer
Answer
i am not sure and good at verilog but here is a link for VHDL code generation of RS encoders.
The article is good with complete GF(256) RS package.
  • asked a question related to FPGA Programming
Question
3 answers
My question concerns Computer-Aided Design and VLSI and low power VLSI.
Relevant answer
Answer
Thanks waris and afaq for the answers
  • asked a question related to FPGA Programming
Question
2 answers
If we implement SIFT algorithm on FPGA then what kind of optimization is possible in it?
Relevant answer
Answer
As far as I am concerned, openCV offers some GPU functions instead. The functions detect and describe interest points extracted from an image with several kind of appearance descriptors, including SIFT, SURF etc. If you use C/C++ , you can implement very fast a test code and see if it works for you.
Check out here:
  • asked a question related to FPGA Programming
Question
2 answers
I would like to do partial reconfiguration with Xilinx system generator tool generated code. I have developed a physical layer model in Xilinx system generator. I found two of the blocks in this model to be of partially reconfigurable modules (I have different functionality for these two, no of IOs are same). I generated the code.
Can you please tell me if anyone has had success with this approach (with sysgen tool)?
Relevant answer
Answer
Hi Srinivas,
I haven't used Xilinx SysGen for partial reconfiguration. However, I have used partial reconfiguration tools extensively for my research. You may wish to read my paper on partial reconfiguration "FPGA-Based Reconfigurable Hardware for Compute-Intensive Data Mining Application", which describes how it is being done. This paper received the best paper award.
Hope this helps.
Darshika
  • asked a question related to FPGA Programming
Question
4 answers
I have a code for face detection using OpenCV with C++ language, and I have to implement it using FPGA Altera. Is there any software, or program that would synthesize my C++ code inFPGA?
Relevant answer
Answer
The short answer is no.
While there are C-FPGA tools (Vivado from Xilinx, OpenCL from Altera, CoDeveloper from Impulse, and ASIC/FPGA high level synthesis tools from Mentor-Synopsys-Cadence, none of them will take OpenCV code and push-button synthesize it.
That said, good methodologies exist for doing <C++>-C-FPGA-C-<C++> work on those portions of your code that need to be accelerated.
You stated that you "have to implement it using FPGA Altera".
What do you have to implement? What part of your application?
Usually, one accelerates the slowest part of the <OpenCV> application that is a bottleneck for your application to achieve real-time or good throughput performance.
This comes from having examples that and profiling that show what the slowest part of the application is. Do you have that information?
alan
  • asked a question related to FPGA Programming
Question
6 answers
I want to implement a delay chain using Adder in QuartusII. But after synthesis, the Adder is removed by QuartusII. I don't know how to set QuartusII.
Relevant answer
Answer
I can give you answer if you can tell me the version of Quartus II
  • asked a question related to FPGA Programming
Question
4 answers
I did a survey of and found the following noise that cause errors in transmitted data,attenuation of signal, cross-talk, cross coupling ,echo, skew of the signal etc. I am trying to model the data corruption that occurs because of these. Can anyone suggest other different types of noise and how they affect the data being sent?
Relevant answer
Answer
Not only noise reduces the quality of the signal and the eye diagram, also bandwidth limitations
have impact on the eye opening. This type of degradation is known as intersymbol interference (ISI) due to the effect of both low-pass filtering and high-pass filtering limitation.
The deviations of the threshold voltage crossings from their ideal position in time is called jitter. Jitter may influence the optimal sampling instant of the decision circuit. Just like noise and ISI, too much jitter closes the eye opening and introduces bit errors. The total jitter may be composed of deterministic jitter and random jitter. Examples of deterministic jitter are data-dependent jitter and duty-cycle distortion jitter. Data-dependent jitter is produced when the signal edge moves slightly in time, depending on the values of the surrounding bits. It can be caused for example by an insufficient bandwidth or by baseline wander due to an insufficient low-frequency cut-off. Duty-cycle distortion jitter occurs if the rising and falling edges do not cross each other at the decision threshold voltage. Random jitter is, in contrast to deterministic jitter, not related to
any data pattern or any deterministic cause. It is produced, for example, by noise on edges with a finite slew rate. It can also be caused by carrier mobility variations due to instantaneous temperature fluctuations. Besides the data jitter described above, also clock jitter exists. This jitter is important in the clock and data recovery circuit where the decision process takes place. For instance, if the sampling instant of the decision circuit varies with time, an increase in BER might occur. In the frequency domain, the jitter counterpart is called phase noise. It is extremely important for the design of oscillators and clock and data recovery circuits