• Content Count

  • Joined

  • Last visited

  • Days Won


PhDev last won the day on September 22 2018

PhDev had the most liked content!

About PhDev

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi, I think you should have a look at Instant SoC. It is a very simple way to solve what you want to do. It compiles C/C++ to vhdl and have classes for UARTs etc. You can do division, truncation and so on. It is free to download and use.
  2. What do you mean with Since you are using a FC1002 Ethernet core the TCP packet data will be streamed out to logic with an AXI stream. This stream is used by your logic. The AXI stream signals are TCP0_TxData, TCP0_TxValid, TCP0_TxReady for transmit data and TCP0_RxData, TCP0_RxValid, TCP0_RxReady for receive data
  3. PhDev

    Arty S7 I2C example

    Hi Erick. If you like C++ I can recommend you to look at Instant-SoC. It generates the hardware needed based on your C++ code. I have not used it with Arty S7 board however I have used it a lot with Arty A7. Here you can find an example using the I2C class.
  4. Hi, I did an example using Instant SoC and it is in the project vault. Maybe that can help.
  5. @Jay D I recommend you to have a look at this tutorial. This core do all Ethernet protocols (ARP, DHCP, UDP, TCP, ICMP etc) that you need without use of any operating system or extra memory. I use it all the time and have not found any problems. You can download and use it for free. The remote programmer also works great. If you do any signal processing like I do there is also a remote logic analyzer that works very good as an internal oscilloscope.
  6. Hi @ntm I think you should have a look at this example: In the example I use the new Instant SoC / Risc V tool. I now use it instead of microblaze when I do smaller projects like the one you describes. The output is VHDL however there is a also verilog wrapper generated.
  7. PhDev

    spi with accelerometer

    Hi @sseroussi I did a project in the Project Vault. That shows how to use the accelerometers on the Nexys 4 board using Instant SoC. That system compiles C++ code directly to a CPU ( RISC-V ) and SPI and other peripherals. It is very easy to use.
  8. I tried the new Instant SoC from FPGA Cores on my Nexys 4 DDR (Nexys A7) board. Instant SoC is a C++ compiler that compiles C++ directly to a RISC-V processor and peripherals. The result is one vhdl file that I synthesized with Vivado. The only file I needed to add was the constraints file to map the signals to pins. The code implements a simple inclinometer. This is a description of what the code does: Sleeps 100 ms Read accelerations from the on board accelerometer using SPI Calculates angles using floating point math (atan, sqrt) Removes the zero offset that is reset using the center button. Print angles with one decimal point on UART Set the angles on 7 segment display Calculates an effect on the 16-leds. A led is “rolling” to the direction the board is leaning. Repeat A lot of the code was taken from Instant SoC class lib doc. The "hardware section", first in the main file defines the IO etc. In this case I created the following objects: ... int main(void) { //% hw_begin FC_IO_Clk Clk(100); FC_IO_Out LED(16); FC_IO_SPI accel(1000000,0,8); FC_IO_UART_TX uart_tx(115200,32); FC_IO_SegmentDisplay s7(8,8,0); FC_IO_In button_center; FC_System_Timer timer; //% hw_end uart_tx << "\r\nInclinometer demo using Nexys\r\n"; ... When compiling this it resulted in a VHDL file with the following port signals: ... entity nexys is port( Clk : in std_logic; LED : out std_logic_vector(15 downto 0); accel_SCLK : out std_logic; accel_MOSI : out std_logic; accel_MISO : in std_logic; accel_SSn : out std_logic; uart_tx : out std_logic; s7_seg : out std_logic_vector(7 downto 0); s7_sel : out std_logic_vector(7 downto 0); button_center : in std_logic ); end entity; architecture IMPL of nexys is ... And if you prefer Verilog there is also a Verilog header file generated: ... module nexys( input Clk, output [15:0] LED, output accel_SCLK, output accel_MOSI, input accel_MISO, output accel_SSn, output uart_tx, output [7:0] s7_seg, output [7:0] s7_sel, input button_center ); endmodule ... The system is free to download. I have attached the bit file (zipped) so it is possible to see what the C++ does. nexys.cpp nexys.xdc
  9. @yildizabdullah spi_clk is an input to STARTUPE2 and can not have a loc constraint. It will automatically be routed to E9.
  10. @[email protected] Yes I think they work great. Very easy to use. I have mostly been using FC1002 with TCP. I have also used FC1003 in a project where UDP (broadcast) was a better choice. I hope they release a FC1004 with RMII: (Both UDP and TCP) DHCP or fix IP works as expected. The remote programmer also works very good. I think it is faster and easier than using XIlinx programming tools. The logic analyzer is also very useful for debugging the system without using the jtag. Only bad thing is that I sometimes need larger sample buffers. I also miss some documentation, however I think I have figured it out most of it now. I really like the AXI-stream. Xilinx has very good components supporting this like clock domain crossing, FIFO, Filters etc.
  11. @Aamirnagra I think you could take a look at these Ethernet cores. There are cores for Spartan 6 that you can download for free. These cores contains all you need to communicate with a PC or Linux like TCP, UDP, Ping etc.
  12. Hi @sieg70 You can use the STARTUPE2 primitive to access E9. STARTUPE2_i : STARTUPE2 port map ( CFGCLK => open, -- 1-bit output: Configuration main clock output CFGMCLK => open, -- 1-bit output: Configuration internal oscillator clock output EOS => open, -- 1-bit output: Active high output signal indicating the End Of Startup. PREQ => open, -- 1-bit output: PROGRAM request to fabric output CLK => '0', -- 1-bit input: User start-up clock input GSR => '0', -- 1-bit input: Global Set/Reset input (GSR cannot be used for the port name) GTS => '0', -- 1-bit input: Global 3-state input (GTS cannot be used for the port name) KEYCLEARB => '0', -- 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM) PACK => '0', -- 1-bit input: PROGRAM acknowledge input USRCCLKO => SPI_Clk, -- 1-bit input: User CCLK input USRCCLKTS => '0', -- 1-bit input: User CCLK 3-state enable input USRDONEO => '0', -- 1-bit input: User DONE pin output control USRDONETS => '0' -- 1-bit input: User DONE 3-state enable output ); With this SPI_Clk goes to E9.
  13. Hi @raultricking I think you should look at these FPGA Ethernet Cores. The cores includes everything you need for Ethernet like TCP/IP, UDP, DHCP and so on. The cores also have remote boot flash programming and an internal logic analyzer. There is an example using your board. You will be up and running in minutes 🙂
  14. Hi @bklopp, I can recommend you to look at if you do signal processing. With this core you don't need any processor etc. You only stream the data and the core do all Ethernet stuff like TCP/IP. It is then very simple to use from Matlab, Python or what ever you prefer. With their logic analyzer you can view the signal as analog, so you can easily look at the signal during all steps. All cores and software can you download for free. Cheers
  15. PhDev

    Arty A7 and Arty S7

    Hi, the main difference (in my point of view) is that Arty S7 doesn't have any Ethernet connection. (Why?) When I develop signal processing stuff etc in Matlab and test them on hardware I use TCP/IP to AXI4 streams, so for me S7 is not usable. Cheers