Topic: Cmd_in wormhole of type cmd_in  (Read 8656 times)

bouain December 18, 2013, 11:07 AM

  • Member
  • *
  • Posts: 12
Hi all,
I use the Zc706 with FMC150.
I found in the document the following information:
Cmd_in_cmdin  Input 
with:
[63..60]  = command word
[59..32]  = address
[31..0]    = data
So, When can I find the information about the configuration of command. Because I think in the reference design the command it's the API use it like GenerateWaveform16. But I want to change this command to VHDL, so I will use it manually .
Any help please?
Mokhtar

arnaudNL December 18, 2013, 11:21 AM (#1)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Dear Mokhtar,


Check the sip_mac_engine star in the firmware source code, it processes cmd packets coming from the host. You can also check the sip_mac_engine documentation. We do not have specific documentation about wormholes but they are VERY self explanatory if you spend time looking at the source code.


I hope that helps,
Arnaud

bouain December 18, 2013, 12:03 PM (#2)

  • Member
  • *
  • Posts: 12
Hi Arnaud,
Thank you for your reply.
I can't find the sip_mac_engine or its document. Where can I find it ?
 
Thank you,
Mokhtar

arnaudNL December 18, 2013, 03:49 PM (#3)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Dear Mokhtar,


Sorry for that I realize you are using the zedboard interface. In this case you can refer to SD167 star description document.


Refering to both chapter 5.3 and the host interface C reference code you should be able to understand what the communication looks like.


The interface between the Zynq fabric and the Arm core is a xilinx streaming FIFO.


Best Regards,
Arnaud

bouain December 19, 2013, 12:28 PM (#4)

  • Member
  • *
  • Posts: 12
Hi Arnaud,
Yes I read this, but I mean the information about the configuration of command :
Cmd_in_cmdin  Input 
with:
[63..60]  = command word
[59..32]  = address
[31..0]    = data
For example: when I select the DAC0 what is the command corresponds to this to put it in command word, address and data. So, the information about the command when I manually configure it without the API (such as like GenerateWaveform16).
Thank you,
Mokhtar.

arnaudNL December 20, 2013, 04:59 AM (#5)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Mohktar,


GenerateWaveform16() does not use API, it only creates a waveform in a buffer,


The host software uses addresses obtained using cid_getstaroffset(), these are the address going on the command bus.


You will need to create the list of read/write to be done in order to use the reference design without "life support" and this is not covered by standard technical support; You have the source code and the documentation, the simulation and you can run the host executable.


Best Regards,
Arnaud

bouain December 20, 2013, 05:55 AM (#6)

  • Member
  • *
  • Posts: 12
Hi Arnaud,
Thank you again for your reply.
I fact, I need only the document that explains the value of command (word and data). What is the value of each commande allows to controle the board and the FMC150? I need just the document.
For example:
[63..60]  = command word =0x01000
[59..32]  = address
[31..0]    = data=0x5500

Thank you,
Mokhtar

arnaudNL December 20, 2013, 06:56 AM (#7)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Mokhtar,


I am not sure if you don't understand what I am saying, but we don't have that.


What you have is a full reference design (hardware, software and firmware) you can refer to in order to answer such questions. Typically if you would do what I offered you (looking at the host interface source code) you would have seen sip.c and things like STELLAR_OP_READ which is one of the command.


I think you are slightly underestimating the efforts required in order to get such a design in hand. You will need to understand (or at least look at) the source code of both firmware and software in order to do your integration work and you cannot rely on us clearing up every single of your concerns, this is YOUR job.


Best Regards,
Arnaud

Peter Spear February 24, 2014, 05:30 PM (#8)

  • Member
  • *
  • Posts: 21
I found the following in sipif.h. I think it what you were looking for (at least it was what I was looking for):

/**
 * A read command, we write a read command and receive a packet pack with the value.
 */
#define STELLAR_OPCODE_READ                2            // Host -> Fw   ( Read a register )
#define STELLAR_OPCODE_WRITE            3            // Host -> Fw   ( Write a register )
#define STELLAR_OPCODE_WRITE_ACK        4            // Fw   -> Host ( Ack a register write )
#define STELLAR_OPCODE_WRITE_DATA        5            // Host -> Fw   ( Host is going to send data )
#define STELLAR_OPCODE_WRITE_DATA_ACK    6            // Fw   -> Host ( Ack a data receiving )   
#define STELLAR_OPCODE_READ_ACK            7            // Fw   -> Host ( Ack a register read )
#define STELLAR_OPCODE_READ_DATA        8            // Host -> Fw   ( Host is asking for data)
#define STELLAR_OPCODE_READ_DATA_ACK    9            // Fw   -> Host ( Ack a data receiving )
#define STELLAR_OPCODE_READ_TO_ACK        10            // Fw   -> Host ( Ack a register read in case of timeout on the sip address range )

Peter

Peter Spear February 24, 2014, 05:46 PM (#9)

  • Member
  • *
  • Posts: 21
Hmm, looks like that was not it. This looks more like it (from 4fm.h)

#define PKT_CMD_MAILBOX                    0
#define PKT_CMD_WRITE                    1
#define PKT_CMD_READ                    2
#define PKT_CMD_QUEUESTATUS                3
#define PKT_CMD_READACK                    4

That matches the codes in cid_stellar_cmd.vhd:

constant cmd_mbx     :std_logic_vector(3 downto 0) :=x"0";
constant cmd_rd      :std_logic_vector(3 downto 0) :=x"2";
constant cmd_wr      :std_logic_vector(3 downto 0) :=x"1";
constant cmd_rd_ack  :std_logic_vector(3 downto 0) :=x"4";

Peter

arnaudNL February 25, 2014, 08:55 AM (#10)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
Dear Peter,


That is correct. The sipif layer having many more command supported. The 4FM.h has the actual command bus commands. Note that we generally only supports PKT_CMD_WRITE and PKT_CMD_READ the others were more legacy/custom project specifics.


Best Regards,
Arnaud

arnaudNL June 13, 2014, 07:23 AM (#11)

  • 4DSP Staff (EU)
  • Administrator
  • Member
  • *****
  • Posts: 7110
This topic is being closed because the issue is considered as resolved by 4DSP. Feel free to create a new topic for any further inquiries.