- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello to all,
I'm new in FPGA and I have a Cyclone II and I made a design with a Nios II. I just want to drive a component (LM629) and I have to send et receive data. I created a tri state PIO # define LM629_DON_NAME "/dev/LM629_DON" # define LM629_DON_TYPE "altera_avalon_pio" # define LM629_DON_BASE 0x01000010 # define LM629_DON_SPAN 16 # define LM629_DON_DO_TEST_BENCH_WIRING 0 # define LM629_DON_DRIVEN_SIM_VALUE 0x0000 # define LM629_DON_HAS_TRI 1 # define LM629_DON_HAS_OUT 0 # define LM629_DON_HAS_IN 0 # define LM629_DON_CAPTURE 0 # define LM629_DON_EDGE_TYPE "NONE" # define LM629_DON_IRQ_TYPE "NONE" # define LM629_DON_FREQ 85000000 # define ALT_MODULE_CLASS_LM629_DON altera_avalon_pio To send a data I just write IOWR_ALTERA_AVALON_PIO_DATA(LM629_DON_BASE , mydata).... and the problem that it doesn't work, I can't send the data... I read I have to change the direction of my port and I use IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data) But finally it's the same thing. :( Can you help me ?? ThanksLink Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
did you get nios with an altera dev board? Look in the Examples directory within the kit install path for examples that use PIO.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you check the header file altera_avalon_pio_regs.h? There are several defines there that can be of interest:
# define IOADDR_ALTERA_AVALON_PIO_DIRECTION(base) __IO_CALC_ADDRESS_NATIVE(base, 1) # define IORD_ALTERA_AVALON_PIO_DIRECTION(base) IORD(base, 1) # define IOWR_ALTERA_AVALON_PIO_DIRECTION(base, data) IOWR(base, 1, data) # define ALTERA_AVALON_PIO_DIRECTION_INPUT 0 # define ALTERA_AVALON_PIO_DIRECTION_OUTPUT 1- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have almost the same problem.
I created a component in Qsys with 3 differently Conduits (sd_clk, sd_cmd and sd_dat) and for this component I have just one Base. How can I use the function IOWR_ALTERA_AVALON_PIO_DIRECTION(component_base, _____) to write output and input for each of the conduits? Does anyone have an idea? Thank a lot in advance!!!- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Those functions are only for Avalon interfaces. Conduits, by their nature, are interfaces that don't conform to a standard supported in Qsys, like Avalon. If you want to use those functions, you have to implement Avalon interfaces on your custom component.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- Those functions are only for Avalon interfaces. Conduits, by their nature, are interfaces that don't conform to a standard supported in Qsys, like Avalon. If you want to use those functions, you have to implement Avalon interfaces on your custom component. --- Quote End --- But I implemented Avalon interface for my component. When I created my component in Qsys, the Avalon interface actually appeared automatically and I just added the three conduits to it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't understand. What are those conduits connected to? They are single signals, not Avalon interfaces, so you can't use the functions you mention except for that slave interface.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- I don't understand. What are those conduits connected to? They are single signals, not Avalon interfaces, so you can't use the functions you mention except for that slave interface. --- Quote End --- These conduits are connected to the PINs of my FPGA board. I followed this tutorial: http://scale.engin.brown.edu/classes/en2911xf14/qsys_comp.pdf and did the creation of a new component exactly as the reg16_avalon_interface, the only diference was the three conduits and not just one. This tutorial doesn't show how to use the functions IOWR_ALTERA_AVALON_PIO_DIRECTION and IOWR_ALTERA_AVALON_PIO_DATA, but I understood that I could do like this: IOWR_ALTERA_AVALON_PIO_DATA(reg16_avalon_interface_base, 0xFFFF) and IOWR_ALTERA_AVALON_PIO_DATA will not be needed since to_hex (conduit) is an output. I think it would be the same in my case, but I don't know how to write it in these functions, since I have three conduits (sd_clk : out, sd_cmd : inout, sd_dat : inout) and one of them (sd_dat) is a std_logic_vector of size 4. That means I have 6 signals altogether. The tutorial shows how to make an avalon interface slave and uses it. But does not show how to use these functions in a software (Nios II Eclipse, which I am using). Is it really not possible to use these functions for my case?
![](/skins/images/C4F7392A5C68ACA60290C9576F107044/responsive_peak/images/icon_anonymous_message.png)
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page