EmbDev.net

Forum: FPGA, VHDL & Verilog Standalone or Xilkernel?


von Ndri R. (Company: lalala) (jmsilva)


Rate this post
useful
not useful
Hi,



I'm working in a system with a very simple operation. It has a 
microblaze processor and two peripherals (A and B), one for transmite 
packets and the other to receive them.



1) Transmmiter takes IP packets from soft_temac peripheral, make some 
transformations and pass it to peripheral A, which has to send it by 
external fpga pins.



2) Receiver takes packets from external pins of peripheral B, make the 
inverse transformations and pass it to the lwip stack, which has to send 
it back to the soft_temac peripheral.



I've thought in two main ways to make de software for this purpouse:



- Use a simple standalone application, which read the state of 
peripherals A and B and then decide if it's better to transmmite or to 
receive, in order to avoid buffer's overflow.



- Use xilkernel with two threads, one for transmmiting and the other for 
receiving.



It's my first project using Microblaze so i don't know what is the best 
choice. I'm not very expert using threads and interrupts, so this is the 
matter of my question,



Thanks in advance!
.

von Duke Scarring (Guest)


Rate this post
useful
not useful
> It's my first project using Microblaze so i don't know what is the best
> choice. I'm not very expert using threads and interrupts, so this is the
> matter of my question,

I would suggest to use the standalone application. All this EDK stuff is 
not so easy to understand, even if you have some experience...

Duke

von Ndri R. (Company: lalala) (jmsilva)


Rate this post
useful
not useful
I also thought using standalone is the better idea. I thik that 
xilkernel is more usefull when you have many tasks to schedule. In my 
system there are only two task (send and receive packets) which must to 
be scheduled.

My main doubt it's about speed. I want to know if it's faster use 
xilkernel or a simple scheduling scheme such as in each iteration read 
one register of both peripherals and decide what process launch.

A pseudocode like that:

while (1)
   priority_A = read_peripheral_state (A)
   priority_B = read_peripheral_state (B)

   if (priority A > priority B)
       launch task_A
   else
       launch task_B
   end if

end while

Thanks for your answers!! :)

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.