Actually I am trying to generate the .bit file and load it directly over the JTAG port. So I am not using SD card like I used while using SDSoC. Is there a way to generate .elf file with Xilinx Vivado which can be used with SD Card?
Perhaps you are confusing SDSoC with ordinary Vivado. They operate differently. Ordinary Vivado doesn't output .elf files except with the help of Xilinx SDK as an external tool.
Let me note that in addition to the .bit file, which contains PL (programmable logic) configuration, it also needs a program on the PS (programming system) to control the FOC over the AXI bus by writing and monitoring FOC registers. The program "focserver" runs on a Linux operating system. See page 20 in the file "EDDP User Manual.pdf" for the block diagram. If you don't need the network services provided by Linux, one can get away with a bare metal programing controlling the EDPS board.
The file "boot.bin" is constructed from the following files:
1. FSBL.elf, which configures the PL part of the Zynq with the .bit file and starts the u-boot.elf
2. system.bit, which contains configuration for the PL.
3. u-boot.elf, which decompresses Linux image file "image.ub" into the memory and starts the Linux kernel.
In the case of the SDSoC, there are additional files on the boot device (SD card).
The whole reason of moving to Xilinx Vivado from SDSoC was the freedom to use Xilinx ILA core for real-time debugging. But I am struggling to put the .bit file to the Arty Z7 board. I noticed that the board files that came with IIoT EDDP Master were different from the ones provided by Digilent (https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1). I tried to use the board files given by Digilent but the build command (vivado_create_project_guimode.cmd) did not go through. I also tried to use the board files provided by Trenz for an example by Digilent (https://reference.digilentinc.com/learn/programmable-logic/tutorials/arty-z7-getting-started-with-zynq/start) and failed there. Considering these board files are different, this may be one of the reasons for this failure.
To put the .bit file to the Arty Z7 board, I recommend generating the boot.bin (this includes .bit file) with the TCL command "TE::hw_build_design -export_prebuilt" and copy it over to the SD card and boot the Arty from the SD card.
Let me recommend starting with the reference design and do the modifications step by step, verifying the result at each step. Why you want to use board files other than what was included in the reference design?
In order to use ILA on the SDSoC project, it has to be in the platform design and one has to modify the foc.cpp to provide debug data. It takes more planning and is more work.
You can also do software simulation, by including the function foc() in an ordinary C++ program and providing suitable inputs and checking outputs.
Also with using SDSoC, I could change Kp Ki values using the focserver. How can this be done using with the HLS design? The Kp, Ki's values seem to be stored in registers. So is it even possible to change them while the motor is running? Is it possible to use focserver and web gui with the HLS design as well?
Yes, it is possible to change them even while the motor is running. The focserver has a command line option "-w REG=VAL" exactly for that purpose, see the page "1" in the file "Embedded_Linux_Code.pdf". Run "focserver -p" to see the list of register names. It is also possible to add this function to the web UI; see the documentation of the network API in the file "Network_API.pdf".
The HLS project uses exactly the same focserver and web UI as the SDSoC project.