The need of Xilnx AXI BRAM Controller IP - fpga

Why someone needs to use AXI BRAM Controller IP, when BRAM supports AXI interface?
Details:
Xilnx provides the AXI BRAM Controller IP which allows to connect to BRAM memory 1 or 2. As a input is has AXI or AXI-lite.
So my question when someone needs to use this IP, when original BRAM IP support AXI input interface

The actual BRAM hardware interface does not have an AXI interface, but the IP core enables you to use AXI or AXI lite with BRAM.

In my Vivado 2017.4 there is no BRAM Ip core.
I have Block memory Generator which will be set to available hardware during synthesis.
As a interface it has "BRAM PORT". To connect this you can use VHDL/Verilog/HLS or for example the AXI BRAM Controller.
So the AXI BRAM Controller is just a tested IP core for translating the BRAM PORT interface to AXI compatible which can be accessed.

Related

How to create ethernet port from fpga digital input-output pins?

I have zynq with carrier board. This board has a ethernet port, but I need two ports. Can I create new ethernet port with fpga IO pins. Is it possible or do have any different idea about that?
My board is Picozed FMC Carrier.
Short: No!
An ethernet interface is a special type of analogue interface with lots and lots of special circuitry on it. You can NOT get the right behavior with a digital interface.
If your FPGA has a USB port you might try to add a USB <=> Ethernet converter chip to get a second Ethernet port. (like all the old Raspberry-Pi's have).

What Windows 10 driver model is appropriate for implementing IP link layer?

I'm looking to write a simple Windows driver to enable running TCP/IP over a proprietary RF module. The module already provides Ethernet-style data packets with source/destination MAC, so I just need to layer IP packets (generated by the regular Microsoft IPv4 subsystem), set the MTU appropriately so they will be the right size, and then call the module's serial API. I'll need to be able to handle transmit statuses and implement an ARP protocol as well. I want the driver to expose a new interface similar to a wifi or ethernet card in Network Connections and use the normal Windows IP stack.
The module is UART and might be connected via FTDI chip, RS-232 converter, or native UART on an IoT Core board, so it will just be talking to a generic serial port. I am fine with only running on Windows 10, but I'm still not sure what to use. Can I use the UWP VPN provider? Do I need to write an NDIS miniport driver, or an interface provider? Also, how will I handle the driver needing complete control over the serial port at all times? I can't write a serial driver as it might be connected via many different types of serial ports.

iptables / ebtables hook function to filter on interface or layer 2

I have used netfilter hook functions to filter/sniff on outgoing IP packets. I'm looking to filter outgoing (from host) packets between IP layer and Link layer to look into Layer 2 information like - interface, MAC address. The NF_INET_POSTROUTING does not give mac address information as it is called in ip_output() before address resolution i guess.
I looked up ebtables hook functions, they seem to be related to Bridge INPUT/FORWARD/OUTPUT. If i understand, the outgoing packets from local tcp/ip do not go through bridge forwarding hooks. Is there way i can hook into packets between Linux IP and link layer to filter (DROP or modify) ...?
I am not sure if there's a generic way to hook this, but some methods come to mind:
LD_PRELOAD socket operations: Supply a shared library with your own implementation of send(|to|msg)
Register a virtual TAP interface and have your application bind to it
Register a virtual interface in-kernel and have your application bind to it
The bonding driver is an example of the latter. Behind the scenes, it scatters egress traffic to slave devices and gathers ingress traffic from them.
I tried this in my uman driver. You can configure via DebugFS an interface to micro-manage. Any application binding to the uman0 virtual interface will have its egress traffic pass through uman_start_xmit and ingress traffic via uman_handle_frame, where you can add code to decide whether to forward/mangle/drop the packet. uman was a side product of my bachelor thesis and might not be fit for production use (If you make it fitter, pull requests are welcome :-).

What should I do to handle the interrupt of ethernet on lowRISC chip?

I am working on the lowRISC recently, and I want to add Ethernet support for it. I have added the Ethernet IP and have wired it to both AXI bus and Ethernet PHY, and I added the Ethernet interrupt to the interrupt wire just like uart and spi do.
Now I am working to write a driver in linux kernel to support my Ethernet. But I don't find the handle functions to uart and spi interrupts, just 2 interrupts called IRQ_SOFTWARE and IRQ_TIMER(which in file arch/riscv/include/asm/irq.h).
How does the lowRISC chip handle the uart and spi interrupts? And What should I do to handle the interrupt of ethernet on lowRISC chip?

How to connect IRQ output of XPS INTC to Microblaze Interrupt input

I have written a custom PLB core for my design, and added interrupt functionality during custom core generation. Interrupt generation logic is designed in custom peripheral. For interrupt control, I added XPS interrupt controller (v2.01a) to the system and connected my custom core's interrupt ports to INTC via master bus. However, as I need to connect IRQ output of INTC to Interrupt input of Microblaze (v8.40), I cannot connect those two ports using Ports tab of System Assembly View, there is no connection option except external port and core's itself. I tried to do it manually on .MHS file, but still I cannot see IRQ and Interrupt ports connected in Graphical Design View. Besides, in Bus Interfaces tab of Assembly View, I can see INTERRUPT port of Microblaze but again, no change can be made.
Use AXI_INTC insteed of XPS_INTC and it should work.
There you will find two bus :
AXI BUS
INTERRUPT BUS.
You will be able to connect the interrupt bus to your MicroBlaze component

Resources