Jump to content

Search the Community

Showing results for tags 'zybo'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Test and Measurement
    • Measurement Computing (MCC)
    • Add-on Boards
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • LabVIEW
    • FRC
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions
    • Archived

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Hello, I have a Zybo board and I want to use MiG to access to DDR, I do want to explore MicroBlaze, so I do not want to use Zynq right now. Can you please give me the needed configuration or guide me how to prepare it, please?
  2. I'm experiencing very long run times for XSCT commands. I initially note this for the ps7_init command but also the other commands are very slow. eg the following command takes a huge time to complete: for {set i 0x0a000000} {$i < 0x0a001000} {incr i 4} {mwr $i $i} ; #write some data in the DRAM I'm using vivado/vitis 2021.2 on windows 10 and using the old Zybo board. The HW is taken from a tutorial (https://www.youtube.com/watch?v=sl8xCMu39Mk&t=6121s) and want to instantiate the ILA to demonstrate the AXI behavior. When I run the ps7_config and ps7_post_config commands to enable PL clock the XSCT console hangs for more than ten minutes. This is not normal since the same project on Vivado 2021.1 and zedboard was almost instantly running the command. I add that to run the command I do open the XSCT console and run: connect target 2 source ps7_init.tcl ps7_init The procedure is faster if I stop the ARM (using the command 'stop') before launching the command. But I'm not sure how stopping the core could affect the initialization procedure and I don't know when exactly is ok to let the ARM to run again using the 'con' command. I went through the code of the ps7_init procedure. Running one line at a time I can tell that each mask_write takes about 10 seconds if the core is running, this clearly suggests that the entire procedure can take a lot of time. When stopping the core the ps7_init command takes about 30s. Furtehr info, I do run the XSCT console in the design mode of Vitis, hence I do not click on the Debug tab on the top right of the window.
  3. Hello, I'm trying to communicate between host (Windows PC) and device (Zybo Z7-20) with micro USB. I have followed the instructions through this link. However, while testing, when I connect the micro USB, 1. No power to Zybo: No recognition 2. Power to zybo: No recognition 3. Power, FPGA program through Xilinx SDK: Recognized as "USB Device" in drive. 4. Disconnect power and re-connect power: No recognition Further info on point 3: When the micro USB is recognized as USB device, it asks to format the drive every time with an error as "E:\ The directory name is invalid". Q1: I understand permission to format is a general procedure, but is it supposed to happen every time I plug in the micro USB? Q2: Isn't it supposed to be recognized as a removable device? When I open device manager, it is recognized under Disk drives as "Xilinx PS USB VirtDisk USB Device" rather than under Ports. Q3: After creating the BOOT.bin and loading into SD Card, JP5 has to be set on SD. Do I follow the same procedure to program after that? That is from Xilinx SDK -> Program FPGA -> Run As -> Launch on Hardware ? I'm a newbie to FPGAs altogether, so apologies if the questions are dim. Thanks in advance.
  4. I followed this forum and changed the constraint files of the Zybo Z720 in Vivado and successfully generate bitstream and the xsa file to import into Vitis. https://forum.digilentinc.com/topic/8943-pmod-as-input-and-output-gpio/ #Pmod Header JE set_property -dict { PACKAGE_PIN V12 IOSTANDARD LVCMOS33 } [get_ports { je_pin1_io }]; set_property -dict { PACKAGE_PIN W16 IOSTANDARD LVCMOS33 } [get_ports { je_pin2_io }]; set_property -dict { PACKAGE_PIN J15 IOSTANDARD LVCMOS33 } [get_ports { je_pin3_io }]; set_property -dict { PACKAGE_PIN H15 IOSTANDARD LVCMOS33 } [get_ports { je_pin4_io }]; set_property -dict { PACKAGE_PIN V13 IOSTANDARD LVCMOS33 } [get_ports { je_pin7_io }]; set_property -dict { PACKAGE_PIN U17 IOSTANDARD LVCMOS33 } [get_ports { je_pin8_io }]; set_property -dict { PACKAGE_PIN T17 IOSTANDARD LVCMOS33 } [get_ports { je_pin9_io }]; set_property -dict { PACKAGE_PIN Y17 IOSTANDARD LVCMOS33 } [get_ports { je_pin10_io }]; I am able to control the GPIO pins of port JF on the Zybo Z720 using the following code, how do I edit this so that I am able to turn on/off LEDs using the Pmod port JE instead. #include "xil_cache.h" #include "xparameters.h" #include "stdio.h" #include "xparameters.h" #include "xuartps.h" #include "xtime_l.h" #include "xgpiops.h" #include "sleep.h" #include "xil_io.h" #include "xil_types.h" #include "xil_printf.h" #include "sleep.h" #include "stdlib.h" #include "string.h" #define HOST_UART_DEVICE_ID XPAR_PS7_UART_1_DEVICE_ID #define HostUart XUartPs #define HostUart_Config XUartPs_Config #define HostUart_CfgInitialize XUartPs_CfgInitialize #define HostUart_LookupConfig XUartPs_LookupConfig #define HostUart_Recv XUartPs_Recv #define HostUartConfig_GetBaseAddr(CfgPtr) (CfgPtr->BaseAddress) #define PMODESP32_UART_BASEADDR XPAR_PMODESP32_0_AXI_LITE_UART_BASEADDR #define PMODESP32_GPIO_BASEADDR XPAR_PMODESP32_0_AXI_LITE_GPIO_BASEADDR #define COUNTS_PER_SECOND (XPAR_CPU_CORTEXA9_CORE_CLOCK_FREQ_HZ /2) #define TIMER_FREQ_HZ 100000000 #define MAX_WIDTH 320 #define MAX_HEIGHT 240 #define MAX_BUTTON 16 #ifdef __MICROBLAZE__ #define HOST_UART_DEVICE_ID XPAR_AXI_UARTLITE_0_BASEADDR #define HostUart XUartLite #define HostUart_Config XUartLite_Config #define HostUart_CfgInitialize XUartLite_CfgInitialize #define HostUart_LookupConfig XUartLite_LookupConfig #define HostUart_Recv XUartLite_Recv #define HostUartConfig_GetBaseAddr(CfgPtr) (CfgPtr->RegBaseAddr) #include "xuartlite.h" #include "xil_cache.h" #else #define HOST_UART_DEVICE_ID XPAR_PS7_UART_1_DEVICE_ID #define HostUart XUartPs #define HostUart_Config XUartPs_Config #define HostUart_CfgInitialize XUartPs_CfgInitialize #define HostUart_LookupConfig XUartPs_LookupConfig #define HostUart_Recv XUartPs_Recv #define HostUartConfig_GetBaseAddr(CfgPtr) (CfgPtr->BaseAddress) #include "xuartps.h" #endif #define PMODESP32_UART_BASEADDR XPAR_PMODESP32_0_AXI_LITE_UART_BASEADDR #define PMODESP32_GPIO_BASEADDR XPAR_PMODESP32_0_AXI_LITE_GPIO_BASEADDR #define BLOCK_SIZE 40 void startup(); XGpioPs_Config *ConfigPtr; XGpioPs output; int main() { startup(); while(1) { XGpioPs_WritePin(&output, 13, 1); //led on (pin 1,2,3,4) XGpioPs_WritePin(&output, 10, 1); XGpioPs_WritePin(&output, 11, 1); XGpioPs_WritePin(&output, 12, 1); } void startup(){ //initialize pins for JF ConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID); XGpioPs_CfgInitialize(&output, ConfigPtr, ConfigPtr->BaseAddr); XGpioPs_SetDirectionPin(&output, 13, 1); XGpioPs_SetOutputEnablePin(&output, 13,1); //pin1 JF1 XGpioPs_SetDirectionPin(&output, 10, 1); XGpioPs_SetOutputEnablePin(&output, 10,1); //pin2 JF2 XGpioPs_SetDirectionPin(&output, 11, 1); XGpioPs_SetOutputEnablePin(&output, 11,1); //pin3 JF3 XGpioPs_SetDirectionPin(&output, 12, 1); XGpioPs_SetOutputEnablePin(&output, 12,1); //pin4 JF4 }
  5. Hello, I receive my I2C Audio PMOD (http://store.digilentinc.com/pmodi2s-stereo-audio-output/) today and I want to use it with my ZYBO. My I2S transmitter look like this: library ieee; use ieee.std_logic_1164.all; entity I2S_Transmitter is generic ( DATA_WIDTH : integer := 32 ); port ( Clock : in STD_LOGIC; MCLK : out STD_LOGIC; Data_In : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); LRCLK : Out STD_LOGIC; DOUT : out STD_LOGIC; Reset : in STD_LOGIC; Empty : out STD_LOGIC ); end entity; architecture I2S_Transmitter_Arch of I2S_Transmitter is signal InputBuffer : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); signal Empty_Signal : std_logic := '1'; signal DOUT_D1 : std_logic := '0'; signal WS : std_logic := '0'; signal Counter : integer := 0; begin LRCLK_Logic: process (Clock) begin if(falling_edge(Clock)) then if(Reset = '1') then Counter <= 0; WS <= '1'; else Counter <= Counter + 1; if(Counter > (DATA_WIDTH / 2 - 1)) then WS <= '1'; else WS <= '0'; end if; if(Counter = (DATA_WIDTH - 1)) then Counter <= 0; end if; end if; end if; end process; Load_and_shift_out_Data: process(Clock) begin if(falling_edge(Clock)) then if(Reset = '1') then InputBuffer <= (others => '0'); Empty_Signal <= '1'; else if(Empty_Signal = '1') then InputBuffer <= Data_In; Empty_Signal <= '0'; else InputBuffer <= InputBuffer((DATA_WIDTH - 2) downto 0) & '0'; DOUT_D1 <= InputBuffer(DATA_WIDTH - 1); end if; if(Counter = (DATA_WIDTH - 1)) then Empty_Signal <= '1'; end if; end if; end if; end process; MCLK <= Clock; LRCLK <= WS; DOUT <= DOUT_D1; Empty <= Empty_Signal; end architecture I2S_Transmitter_Arch; With this Testbench: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity I2S_Transmitter_TB is -- Port ( ); end I2S_Transmitter_TB; architecture I2S_Transmitter_TB_Arch of I2S_Transmitter_TB is signal MCLK : std_logic; signal WS : std_logic := '0'; signal SCK : std_logic := '1'; signal DOUT : std_logic; signal Empty : std_logic := '0'; signal Reset : std_logic := '0'; signal Data_In : std_logic_vector(31 downto 0) := (others => '0'); -- 8,192 MHz Clock constant clk_period: Time := 122 ns; constant ws_period: Time := 16 * clk_period; begin DUT: entity work.i2s_transmitter port map ( LRCLK => WS, MCLK => MCLK, Data_In => Data_In, Clock => SCK, DOUT => DOUT, Empty => Empty, Reset => Reset ); CLOCK: process begin wait for clk_period / 2; SCK <= not SCK; end process; STIMULUS: process begin Data_In <= x"507B507B"; Reset <= '1'; wait for 10 us; Reset <= '0'; wait for 10 us; Data_In <= (others => '0'); wait for 30 ms; Reset <= '1'; wait for 5 ms; end process; end I2S_Transmitter_TB_Arch; I use Port JC on my ZYBO and this is my XDC-File: # Clock set_property PACKAGE_PIN L16 [get_ports Clock_In] set_property IOSTANDARD LVCMOS33 [get_ports Clock_In] set_property PACKAGE_PIN V15 [get_ports MCLK] set_property IOSTANDARD LVCMOS33 [get_ports MCLK] set_property PACKAGE_PIN W15 [get_ports LRCLK] set_property IOSTANDARD LVCMOS33 [get_ports LRCLK] set_property PACKAGE_PIN T10 [get_ports DOUT] set_property IOSTANDARD LVCMOS33 [get_ports DOUT] set_property IOSTANDARD LVCMOS33 [get_ports DEM] set_property PACKAGE_PIN T11 [get_ports DEM] The clock frequency for MCLK is 8,192MHz, generated with a MMCM. I´ve connected this speaker (http://store.digilentinc.com/speaker/) to the PMOD, but I doesn´t hear any sound. Why? Thank you for help!
  6. k-k

    Beginner needs help

    Hello, I am an beginner and use a Zybo Z20 Board Vivado and Vitis. I tryed the Tutorial: Getting Started with Vivado and Vitis for Baremetal Software Projects - Digilent Reference (it works) Now i tryed to add a RTL-Block (VHDL) and connect it with the axi-gpio. Then i want to manipulate it using vitis and a c-code, a LED should shine. But it doesn't work. Is there a tutorial how to connect PL and PS? Can someone help me? Thanks
  7. I setup 2 zybo boards, one sends data, and the other receives. The idea is to flip a switch on the sender to turn on an led on the receiving board. Th ey are configured the same, but one is coded to send, and the other to receive. Both boards are connected on two computers and can send/receive using the demo code from the digilent github. After modifying it to send the values from the switches, it does nothing. Here's what I've coded for the Send.txt and for the Receive.txt. Honestly, I'm not too sure what's going on in the code and am trying to make some sense from it. Any help would be appreciated.
  8. Hello. Im trying to read an I2C sensor (ADXL357) with a Zybo Z7-10. Im kinda lost since im not an expert on fpgas. Im using this design on vivado 2019.2 ##Clock signal set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports { sysclk }]; #IO_L12P_T1_MRCC_35 Sch=sysclk create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports { sysclk }]; ##Pmod Header JC set_property -dict { PACKAGE_PIN V15 IOSTANDARD LVCMOS33 } [get_ports { port_i2c_scl_io }]; #IO_L10P_T1_34 Sch=jc_p[1] set_property -dict { PACKAGE_PIN W15 IOSTANDARD LVCMOS33 } [get_ports { port_i2c_sda_io }]; #IO_L10N_T1_34 Sch=jc_n[1] ls /dev gives only i2c-0 interface. Im working with a pynq framework that uses petalinux as base. For now im not using python but im trying first to detect the sensor address (from linux) and then do the logic (python or with sdk) When i connect to the Pin 1 and 2 of the PMOD JC i dont detect nothing with "sudo i2c -r -y 0" only "--" on all the addresses. I have tried other ports but no response yet. What am i doing wrong? Is Pin 1/2 correct on JC? i dont understand why linux doesn't detect the sensor. The reference manual says that any pin can be routed throug PMOD but how do i said to the linux that P1-2 of JC is the i2c? (i have all pmods available so i can use all). Thanks EDIT: cat ./petalinux_project/build/tmp/work-shared/plnx-zynq7/kernel-source/arch/arm/boot/dts/zynq-7000.dtsi amba: amba { u-boot,dm-pre-reloc; compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; interrupt-parent = <&intc>; ranges; ... ... i2c0: i2c@e0004000 { compatible = "cdns,i2c-r1p10"; status = "disabled"; clocks = <&clkc 38>; interrupt-parent = <&intc>; interrupts = <0 25 4>; reg = <0xe0004000 0x1000>; #address-cells = <1>; #size-cells = <0>; }; i2c1: i2c@e0005000 { compatible = "cdns,i2c-r1p10"; status = "disabled"; clocks = <&clkc 39>; interrupt-parent = <&intc>; interrupts = <0 48 4>; reg = <0xe0005000 0x1000>; #address-cells = <1>; #size-cells = <0>; }; Is I2C disabled right? what should be the device tree to enable the pins on a pmod? modifying the dts then i should recompile boot.bind and image.ub and replace it on the sd?
  9. Hello everybody, I am working on Image processing pipeline using zybo and Pcam. I have reference hardware design and petalinux project from v2017.4 by Digilent Hardware Design : https://github.com/Digilent/Zybo-Z7-20-base-linux Petalinux project : https://github.com/Digilent/Petalinux-Zybo-Z7-20 I have tested this project in v2017.4 and it works perfectly well. I am trying recreate it using only Xilinx IP cores and xilinx linux kernel. I notice that the petalinux project uses Digilent's kernel for drivers and not the xilinx kernel. Also another difference in the design is that I do not have the display part included in the design as I only need the images to be captured and not displayed. The pipeline is as follows Sensor--> MIPI CSI2 Rx Subsystem -> Video Frame Buffer --> PS I am able to get the media graph ans also set it to the format and resolution that I want. However after that when I use yavta application to save the Images it freezes (Please see the images below) Is there any differences in the kernel that is causing this issue. Any help is higly appreciated.
  10. Hi guys, I bought a zybo board and did a simple hello world project to test the functionality, but it didn't work. Here's what I've done: After exporting hardware and creating sdk projects, I downloaded the bitstream & program into zybo as usual. But the board wouldn't run the program normally(It doesn't terminate and doesn't print helloworld). So I debug the board using xsdb, step by step, and find out that disassembly result is not the same as elf file displayed in SDK. xsd shows that data at 0x100000 is 0xea020049; however, in the sdk, the data should be 0xea000049, as shown in the second picture. If I keep on stpi, since it'll go to the wrong place, CPU will finally goto infinite loop. xsdb% connect tcfchan#0 xsdb% targets 1 APU 2 ARM Cortex-A9 MPCore #0 (Running) 3 ARM Cortex-A9 MPCore #1 (Running) 4 xc7z010 xsdb% fpga -f "design_1_wrapper_hw_platform_0/design_1_wrapper.bit" 100% 1MB 1.8MB/s 00:01 xsdb% targets 2 xsdb% source "design_1_wrapper_hw_platform_0/ps7_init.tcl" xsdb% rst; ps7_init; ps7_post_config; Info: ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0xffffff28 (Suspended) Info: ARM Cortex-A9 MPCore #1 (target 3) Stopped at 0xffffff34 (Suspended) xsdb% dow "hello_world/Debug/hello_world.elf" Downloading Program -- C:/Xilinx/Zybo/project_2/project_2.sdk/hello_world/Debug/hello_world.elf section, .text: 0x00100000 - 0x001016eb section, .init: 0x001016ec - 0x00101703 section, .fini: 0x00101704 - 0x0010171b section, .rodata: 0x0010171c - 0x00101733 section, .data: 0x00101738 - 0x00101bab section, .eh_frame: 0x00101bac - 0x00101baf section, .mmu_tbl: 0x00104000 - 0x00107fff section, .init_array: 0x00108000 - 0x00108003 section, .fini_array: 0x00108004 - 0x00108007 section, .bss: 0x00108008 - 0x0010802f section, .heap: 0x00108030 - 0x0010a02f section, .stack: 0x0010a030 - 0x0010d82f 100% 0MB 0.4MB/s 00:00 Setting PC to Program Start Address 0x00100000 Successfully downloaded C:/Xilinx/Zybo/project_2/project_2.sdk/hello_world/Debug/hello_world.elf xsdb% mrd 0x100000 16 100000: EA020049 100004: EA040025 100008: EA00002B 10000C: EA00003B 100010: EA000032 100014: E320F000 100018: EA000000 10001C: EA00000F 100020: F92DD91F 100024: ED3F1FBB 100028: ED6D0B20 10002C: EEF11A10 100030: 00001004 100034: 00001A10 100038: FFFF1004 10003C: EFF1019E elf file contents: Disassembly of section .text: 00100000 <_vector_table>: 100000: ea000049 b 10012c <_boot> 100004: ea000025 b 1000a0 <Undefined> 100008: ea00002b b 1000bc <SVCHandler> 10000c: ea00003b b 100100 <PrefetchAbortHandler> 100010: ea000032 b 1000e0 <DataAbortHandler> 100014: e320f000 nop {0} 100018: ea000000 b 100020 <IRQHandler> 10001c: ea00000f b 100060 <FIQHandler> 00100020 <IRQHandler>: 100020: e92d500f push {r0, r1, r2, r3, ip, lr} 100024: ed2d0b10 vpush {d0-d7} 100028: ed6d0b20 vpush {d16-d31} 10002c: eef11a10 vmrs r1, fpscr 100030: e52d1004 push {r1} ; (str r1, [sp, #-4]!) 100034: eef81a10 vmrs r1, fpexc 100038: e52d1004 push {r1} ; (str r1, [sp, #-4]!) 10003c: eb00019e bl 1006bc <IRQInterrupt> So, the problem is, WHY is the DRAM data partially wrong??? I almost doubt DRAM works normally, but I just bought the board a week ago lol.
  11. Previously I have asked this question in the forum, however, my explanation was not so clear and may result in confusion. Hence, I decided to rephrase my question in this new post. Currently, I have been researching on how to allow my Zybo z720 board to receive data from Thingspeak channel through using Pmod ESP32 and control the status of the LED according to the data of Thingspeak. I have already known how to send the data (collected from ALS, AQS and HYGRO) from the zybo board to Thingspeak by using the AT command. I will show the code below. void receiveData(XTime time){ XTime tEnd, tCur; u8 recv_buffer=0; u32 num_received=0; XTime_GetTime(&tCur); tEnd = tCur + (time * COUNTS_PER_SECOND); do { num_received = ESP32_Recv(&ESP32, &recv_buffer,1); if(num_received >0){ num_received = ESP32_Recv(&ESP32, &recv_buffer,1); xil_printf("%c", recv_buffer); } if(tCur == tCur + COUNTS_PER_SECOND){ countdown = countdown -1; } else XTime_GetTime(&tCur); } while (tCur < tEnd); } void setWifiMode(void){ u8 tx[]="AT+CWMODE=3\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); usleep(100); receiveData(3); } void connectWifi(void){ u8 tx[] = "AT+CWJAP=\"xxxxx\",\"xxxxxx"\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); usleep(100); receiveData(30); } void establishConnection(void){ u8 tx[] = "AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); receiveData(10); } void cipsend(float temp, u16 co2, u8 light, float humidity){ u8 command[150]; u8 finalcmd[50]; //field1 Ph field2 Temp field3 co2 field4 humidity field5 light sprintf((char*)command, "GET http://api.thingspeak.com/update?api_key=xxxxxxxxxxxxx&field1=0&field2=%d.%02d&field3=%d&field4=%d.%02d&field5=%d\r\n" ,(int) temp_degc,((int) (temp_degc * 100)) % 100,co2,(int) hum_perrh,((int) (hum_perrh * 100)) % 100,light); u32 length = strlen((char*)command); sprintf((char*)finalcmd, "AT+CIPSEND=%d\r\n", (int)length); u32 cmdlength =strlen((char*)finalcmd); xil_printf("Length %d\r\n", length); xil_printf((char *)finalcmd); ESP32_SendBuffer(&ESP32, finalcmd, cmdlength); sleep(1); xil_printf((char *)command); ESP32_SendBuffer(&ESP32, command, length); receiveData(4); } Beforehand, I have tried this project with the NodeMCU since I thought the code I used for NodeMCU should be similar to ESP32. It worked perfectly. As I changed the thingspeak data link and updated the data, I can see my LED light up or light off. However, while I analysed the NodeMCU code, it does not use AT command and it also does not have any relationship with the code I used for sending data to Thingspeak. So, do I need to use the same AT command, or I need to use something like Json parsing to accomplish that? I will show all my work I have done below. Thanks Cpp Code Update 1.txt Arduino IoT Control.txt
  12. Hi, I am using Pmod ESP32 and figure out the possibilities to receive data from Thingspeak. Based on my research, I found this link may help me to get Thingspeak data via using AT command. The link is here: https://allaboutfpga.com/remote-monitoring-and-control-of-home-appliances-from-cloud-using-edge-artix-7-fpga-board/ Remote Monitoring and control of Home appliances from cloud using EDGE Artix 7 FPGA board (allaboutfpga.com). This picture (picture is from the link above) tells me what AT command I should use for receiving data from Thingspeak Cloud. I used the above-mentioned AT comments like "AT+CIPSEND=69" and "GET /channels/xxxxxxx/fields/1.json?results=1" to do the job. But I can't get the result I want. I expect there will be +IPD, <num of bits>:data rather than "Send OK" and "Recv xx bytes". These are the code: #include "xil_cache.h" #include "xparameters.h" #include "stdio.h" #include "xparameters.h" #include "xuartps.h" #include "xtime_l.h" #include "xgpiops.h" extern "C"{ #include "PmodESP32.h" } /******************************************************************************/ /* */ /* Defines */ /* */ /******************************************************************************/ #define HOST_UART_DEVICE_ID XPAR_PS7_UART_1_DEVICE_ID #define HostUart XUartPs #define HostUart_Config XUartPs_Config #define HostUart_CfgInitialize XUartPs_CfgInitialize #define HostUart_LookupConfig XUartPs_LookupConfig #define HostUart_Recv XUartPs_Recv #define HostUartConfig_GetBaseAddr(CfgPtr) (CfgPtr->BaseAddress) #define PMODESP32_UART_BASEADDR XPAR_PMODESP32_0_AXI_LITE_UART_BASEADDR #define PMODESP32_GPIO_BASEADDR XPAR_PMODESP32_0_AXI_LITE_GPIO_BASEADDR #define COUNTS_PER_SECOND (XPAR_CPU_CORTEXA9_CORE_CLOCK_FREQ_HZ /2) #define TIMER_FREQ_HZ 100000000 #define MAX_WIDTH 320 #define MAX_HEIGHT 240 #define MAX_BUTTON 16 /******************************************************************************/ /* */ /* Function Declarations */ /* */ /******************************************************************************/ void EnableCaches(); void DisableCaches(); void startup(); void receiveData(XTime time); void setWifiMode(void); void connectWifi(void); void establishConnection(void); void cipsend(void); /******************************************************************************/ /* */ /* Variables */ /* */ /******************************************************************************/ HostUart myHostUart; XGpioPs_Config *ConfigPtr; XGpioPs output; XTime TimeStart; XTime TimeEnd; PmodESP32 ESP32; int countdown =60; char counter[20]; int main() { EnableCaches(); startup(); setWifiMode(); xil_printf("Init Started\n\r"); connectWifi(); xil_printf("Wifi Done\n\r"); // sleep(2); XTime_GetTime(&TimeStart); TimeEnd = TimeStart + ((XTime)COUNTS_PER_SECOND); establishConnection(); cipsend(); DisableCaches(); return 0; } void startup(){ //Init ESP32 HostUart_Config *CfgPtr; ESP32_Initialize(&ESP32, PMODESP32_UART_BASEADDR, PMODESP32_GPIO_BASEADDR); CfgPtr = HostUart_LookupConfig(HOST_UART_DEVICE_ID); HostUart_CfgInitialize(&myHostUart, CfgPtr, HostUartConfig_GetBaseAddr(CfgPtr)); } void receiveData(XTime time){ XTime tEnd, tCur; u8 recv_buffer=0; u32 num_received=0; XTime_GetTime(&tCur); tEnd = tCur + (time * COUNTS_PER_SECOND); do { num_received = ESP32_Recv(&ESP32, &recv_buffer,1); if(num_received >0){ num_received = ESP32_Recv(&ESP32, &recv_buffer,1); xil_printf("%c", recv_buffer); } if(tCur == tCur + COUNTS_PER_SECOND){ countdown = countdown -1; } else XTime_GetTime(&tCur); } while (tCur < tEnd); } void setWifiMode(void){ u8 tx[]="AT+CWMODE=3\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); //usleep(100); receiveData(3); } void connectWifi(void){ u8 tx[] = "AT+CWJAP=\"SSID\",\"Password\"\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); //usleep(100); receiveData(30); } void establishConnection(void){ u8 tx[] = "AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); receiveData(10); } void cipsend(void){ u8 command[150]; u8 finalcmd[50]; sprintf((char*)command, "GET https://api.thingspeak.com/channels/"ThingSpeak_Channel_Num"/fields/1.json?results=1" ); u32 length = strlen((char*)command); sprintf((char*)finalcmd, "AT+CIPSEND=%d\r\n", (int)length); u32 cmdlength =strlen((char*)finalcmd); xil_printf("Length %d\r\n", length); xil_printf((char *)finalcmd); ESP32_SendBuffer(&ESP32, finalcmd, cmdlength); //sleep(1); xil_printf((char *)command); ESP32_SendBuffer(&ESP32, command, length); receiveData(10); } void EnableCaches() { #ifdef __MICROBLAZE__ #ifdef XPAR_MICROBLAZE_USE_ICACHE Xil_ICacheEnable(); #endif #ifdef XPAR_MICROBLAZE_USE_DCACHE Xil_DCacheEnable(); #endif #endif } void DisableCaches() { #ifdef __MICROBLAZE__ #ifdef XPAR_MICROBLAZE_USE_ICACHE Xil_ICacheDisable(); #endif #ifdef XPAR_MICROBLAZE_USE_DCACHE Xil_DCacheDisable(); #endif #endif } Here is the result from Vitis Serial Terminal. No IPD response and Json Script included. AT+CWMODE=3 AT+CWMODE=3 OK Init Started AT+CWJAP="ssid","password" AT+CWJAP="ssid","password" WIFI DISCONNECT WIFI CONNECTED WIFI GOT IP OK Wifi Done AT+CIPSTART="TCP","api.thingspeak.com",80 AT+CIPSTART="TCP","api.thingspeak.com",80 CONNECT OK Length 71 AT+CIPSEND=71 GET https://api.thingspeak.com/channels/xxxxxxx/fields/1.json?results=1TCPED7 Recv 71 bytes SEND OK CLOSED Meanwhile, I tried the AT command in the Arduino and ESP01S. I can receive the IPD command and Java Script like following: 19:19:52.989 -> AT+CWMODE=3 19:19:52.989 -> 19:19:52.989 -> OK 19:20:02.336 -> AT+CWJAP="ssid","password" 19:20:02.336 -> WIFI DISCONNECT 19:20:04.486 -> WIFI CONNECTED 19:20:05.468 -> WIFI GOT IP 19:20:07.338 -> 19:20:07.338 -> OK 19:20:16.096 -> AT+CIPSTART="TCP","184.106.153.149",80 19:20:16.331 -> CONNECT 19:20:16.331 -> 19:20:16.331 -> OK 19:20:23.943 -> AT+CIPSEND=69 19:20:23.943 -> 19:20:23.943 -> OK 19:20:23.943 -> > fields/1.json?results=1 19:20:39.376 -> busy s... 19:20:39.376 -> 19:20:39.376 -> Recv 69 bytes 19:20:39.611 -> 19:20:39.611 -> SEND OK 19:20:40.207 -> 19:20:40.207 -> +IPD,296:{"channel": {"id":xxxxxxx,"name":"xxxxxxx","latitude":"0.0","longitude":"0.0","field1":"led1","field2":"led2","field3":"led3", "created_at":"2021-04-30T00:36:29Z","updated_at":"2021-04-30T00:37:05Z","last_entry_id":18}, "feeds":[{"created_at":"2021-06-07T11:13:39Z","entry_id":18,"field1":"0"}]}CLOSED For updating data from Zybo board to Thingspeak, I can receive the IPD command like following: AT+CIPSTART="TCP","api.thingspeak.com",80 AT+CIPSTART="TCP","api.thingspeak.com",80 CONNECT OK Length 135 AT+CIPSEND=135 GET http://api.thingspeak.com/update?api_key=xxxxxxxxxxxxxxxxxx &field1=0.64&field2=29.84&field3=488&field4=47.47&field5=139&field6=6.31 TCPED15 Recv 135 bytes SEND OK +IPD,3:420CLOSED Can anyone tell me how can allow Pmod ESP32 to receive the Java Script like how Arduino does. Thanks
  13. Hi, I have been trying to use the zybo board timer interrupt functions to control my water pump while running other program, kind of like multitasking. The program goes like this, when the my other programs are running in the while(true) loop (running forever), the water pump will turn on for 12 hours and turn off for 12 hours. Before jumping into actual program, I made some simple testing. While the Pmod HYGRO is getting value, the led 4bits will have a loop of turning on for 100s and turning off 100s (like led toggling) Here is what I have tried with built-in led: #include <stdio.h> #include "platform.h" #include "xil_printf.h" #include "xparameters.h"; #include "xgpio.h"; #include "xtmrctr.h"; #include "xscugic.h"; #include "xil_exception.h"; #include "PmodHYGRO.h" #include "sleep.h" #include "xil_cache.h" #ifdef __MICROBLAZE__ #define TIMER_FREQ_HZ XPAR_CPU_M_AXI_DP_FREQ_HZ #else #define TIMER_FREQ_HZ 100000000 #endif PmodHYGRO myDevice; void DemoInitialize(); void DemoRun(); void DemoCleanup(); void EnableCaches(); void DisableCaches(); // Parameter definitions #define INTC_DEVICE_ID XPAR_PS7_SCUGIC_0_DEVICE_ID #define TMR_DEVICE_ID XPAR_TMRCTR_0_DEVICE_ID #define LEDS_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID #define INTC_TMR_INTERRUPT_ID XPAR_FABRIC_AXI_TIMER_0_INTERRUPT_INTR #define TMR_LOAD 0xF8000000 XGpio LEDInst; XScuGic INTCInst; XTmrCtr TMRInst; static int led_data; static int tmr_count; //void print (char *str); static void TMR_Intr_Handler(void *baseaddr_p); static int IntcInitFunction (u16 DeviceId, XTmrCtr *TmrInstancePtr); void TMR_Intr_Handler(void *data){ if (XTmrCtr_IsExpired(&TMRInst,0)){ // Once timer has expired 3 times, stop, increase counter //reset timer and start running again if(tmr_count==3){ XTmrCtr_Stop(&TMRInst,0); tmr_count=0; //led_data++; led_data=~led_data; XGpio_DiscreteWrite(&LEDInst,1,led_data); XTmrCtr_Reset(&TMRInst,0); XTmrCtr_Start(&TMRInst,0); }else tmr_count++; } } // Initial Setup Functions int InterruptSystemSetup(XScuGic *XScuGicInstancePtr){ // Enable Interrupt Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT, (Xil_ExceptionHandler) XScuGic_InterruptHandler, XScuGicInstancePtr); Xil_ExceptionEnable(); return XST_SUCCESS; } int IntcInitFunction (u16 DeviceId, XTmrCtr *TmrInstancePtr){ XScuGic_Config *IntcConfig; int status; //Interrupt controller initialisation IntcConfig=XScuGic_LookupConfig(DeviceId); status= XScuGic_CfgInitialize(&INTCInst, IntcConfig, IntcConfig->CpuBaseAddress); if (status!= XST_SUCCESS) return XST_FAILURE; //Call to interrupt setup status= InterruptSystemSetup(&INTCInst); if (status != XST_SUCCESS) return XST_FAILURE; // Connect timer interrupt to handler status= XScuGic_Connect(&INTCInst, INTC_TMR_INTERRUPT_ID, (Xil_ExceptionHandler) TMR_Intr_Handler, (void*) TmrInstancePtr); if (status != XST_SUCCESS) return XST_FAILURE; // Enable timer interrupts in the controller XScuGic_Enable(&INTCInst, INTC_TMR_INTERRUPT_ID); return XST_SUCCESS; } int main() { init_platform(); led_data=0; int status; // INITIALISE THE PERIPHERALS & SET DIRECTIONS OF GPIO // Initialise LEDs status=XGpio_Initialize(&LEDInst, LEDS_DEVICE_ID); ; if (status != XST_SUCCESS) return XST_FAILURE; // Set LEDs direction to outputs XGpio_SetDataDirection(&LEDInst, 1,0x00); //Initilise interrupt controller status=IntcInitFunction(INTC_DEVICE_ID, &TMRInst); if (status != XST_SUCCESS) return XST_FAILURE; // Set the TIMER status= XTmrCtr_Initialize(&TMRInst, TMR_DEVICE_ID); if (status != XST_SUCCESS) return XST_FAILURE; XTmrCtr_SetHandler(&TMRInst, (XTmrCtr_Handler) TMR_Intr_Handler, &TMRInst); XTmrCtr_SetResetValue(&TMRInst,0,TMR_LOAD); XTmrCtr_SetOptions(&TMRInst,0, XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION); XTmrCtr_Start(&TMRInst,0); while(1) DemoInitialize(); DemoRun(); DemoCleanup(); return 0; } void DemoInitialize() { EnableCaches(); xil_printf("Init Started\n\r"); HYGRO_begin( &myDevice, XPAR_PMODHYGRO_0_AXI_LITE_IIC_BASEADDR, 0x40, // Chip address of PmodHYGRO IIC XPAR_PMODHYGRO_0_AXI_LITE_TMR_BASEADDR, XPAR_PMODHYGRO_0_DEVICE_ID, TIMER_FREQ_HZ // Clock frequency of AXI bus, used to convert timer data ); xil_printf("Init Done\n\r"); } void DemoCleanup() { DisableCaches(); } void DemoRun() { float temp_degc, hum_perrh, temp_degf; while (1) { temp_degc = HYGRO_getTemperature(&myDevice); temp_degf = HYGRO_tempC2F(temp_degc); hum_perrh = HYGRO_getHumidity(&myDevice); xil_printf( "Temperature: %d.%02d deg F Humidity: %d.%02d RH\n\r", (int) temp_degf, ((int) (temp_degf * 100)) % 100, (int) hum_perrh, ((int) (hum_perrh * 100)) % 100 ); // %f does not work with xil_printf // instead, converting float to a pair of ints to display %.2f. // 1 sample per second maximum, as per 9.2.1 in HDC1080 reference manual sleep(1); } } void EnableCaches() { #ifdef __MICROBLAZE__ #ifdef XPAR_MICROBLAZE_USE_ICACHE Xil_ICacheEnable(); #endif #ifdef XPAR_MICROBLAZE_USE_DCACHE Xil_DCacheEnable(); #endif #endif } void DisableCaches() { #ifdef __MICROBLAZE__ #ifdef XPAR_MICROBLAZE_USE_ICACHE Xil_ICacheDisable(); #endif #ifdef XPAR_MICROBLAZE_USE_DCACHE Xil_DCacheDisable(); #endif #endif } Here is Vivado block diagram: Here are some issues faced: 1) when i change value in "if(tmr_count==3)" to a large value, the time of toggling is still within 3s. (if there is no HYGRO code) 2) the led does not function, but the HYGRO functions when there is code for HYGRO If anyone can also help me or give me suggestion on water pump timer control, I will be so much appreciate it. I will upload my Vivado block design and Vitis code below for your reference. Thanks Luke Louyu. New Code V1.0.txt
  14. so i created this project , to display the video from camera OV7670 through VGA on my Zedboard , only using the PL part , the synthesis runs good but i when i try to generate the bitstream i get these errors that i can't seem to understand : error 1 : [Place 30-574] Poor placement for routing between an IO pin and BUFG. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule. < set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets pclk_IBUF] > pclk_IBUF_inst (IBUF.O) is locked to IOB_X0Y43 and pclk_IBUF_BUFG_inst (BUFG.I) is provisionally placed by clockplacer on BUFGCTRL_X0Y7 error 2 : [Place 30-99] Placer failed with error: 'IO Clock Placer failed' Please review all ERROR, CRITICAL WARNING, and WARNING messages during placement to understand the cause for failure. error 3 : [Common 17-69] Command failed: Placer could not place all instances here is a link where you should find everything you need if you you want to take a look : www.github.com/moncefou/camera_vga_zedboard
  15. Hi, everyone here. Now, I have tried with my Pmod AD1. I used the demo code provided by the Digilent, but the value shown in the Vitis Serial Terminal is different from the value I have seen in the multimeter. For example, when I insert my sensor A into the channel A0, the value shown in 2.56. The value shown in the multimeter is 2.9V. When I insert my sensor B into the channel A1, the value shown in the Vitis Serial Terminal is 1.08. The value shown in the multimeter is about 2.1V. When the sensor induced voltage exceeds 1.8V, the AD1 value returns back to 0. I think this diagram might tell me the reason. But I am not sure since I am new to FPGA & electronic and I don't quite understand the datasheet. (Link: https://www.analog.com/media/cn/technical-documentation/evaluation-documentation/AD7476A_7477A_7478A.pdf?_ga=2.196220652.1995249494.1621070558-1887244704.1616928603) Through comparing with the AD1 reading voltage and the multimeter voltage, i found there is an linear relationship between them. I made an excel file to show you guys the relationship. I suspected i need to add an additional voltage source but not sure as well. When I connects the Vcc to the D0 or D1, the serial terminal said 3.3V. I did not change anything in the demo code, is there anyway to allow the AD1 reading to be the same as the reading in the multimeter. Thanks Luke
  16. Hi to everyone. I have successfully tried to use Pmod ESP32 to upload the other Pmod sensors data into the Thingspeak and used GPIO inside the zybo board to control the LED when some Pmod sensor value is too high or too low. Now, my supervisor asked me and my team to do IoT control. For example, an user pressed the button in the webpage or mobile app, the LED which connected to zybo board can turn on or turn off. My teammate now can send the 1 or 0 data to Thingspeak. Now, I want to use my Zybo baord to receive the Thingspeak data that my teammate has made. I have been searching some tutorials on the website but they all that Arduino based project. Here is the resource I found: And below are what I have tired to create. Here is the block diagram and Vitis code I have write Here are my questions For Zybo baord to achieve the IoT control, should I modify the code I have written, or modify the arduino code shown in the Youtube video above. And how can I integrate together? I think I need to change/modify this part of code (this code is to send the data to thingspeak) in order to allow the zybo to receive the data from thingspeak and achieve the IoT control. But I am not sure. void receiveData(XTime time){ XTime tEnd, tCur; u8 recv_buffer=0; u32 num_received=0; XTime_GetTime(&tCur); tEnd = tCur + (time * COUNTS_PER_SECOND); do { num_received = ESP32_Recv(&ESP32, &recv_buffer,1); if(num_received >0){ num_received = ESP32_Recv(&ESP32, &recv_buffer,1); xil_printf("%c", recv_buffer); } if(tCur == tCur + COUNTS_PER_SECOND){ countdown = countdown -1; } else XTime_GetTime(&tCur); } while (tCur < tEnd); } void setWifiMode(void){ u8 tx[]="AT+CWMODE=3\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); usleep(100); receiveData(3); } void connectWifi(void){ u8 tx[] = "AT+CWJAP=\"xxxxxxxxxxx\",\"xxxxxxxxxxxxxxx\"\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); usleep(100); receiveData(30); } void establishConnection(void){ u8 tx[] = "AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80\r\n"; u32 num = strlen((char *) tx); xil_printf((char *) tx); ESP32_SendBuffer(&ESP32, tx, num); receiveData(10); } void cipsend(float temp, u16 co2, u8 light, float humidity){ u8 command[150]; u8 finalcmd[50]; //field1 Ph field2 Temp field3 co2 field4 humidity field5 light sprintf((char*)command, "GET http://api.thingspeak.com/update?api_key=CE8VFL1E8ZJNGZM8&field1=0&field2=%d.%02d&field3=%d&field4=%d.%02d&field5=%d\r\n" ,(int) temp_degc,((int) (temp_degc * 100)) % 100,co2,(int) hum_perrh,((int) (hum_perrh * 100)) % 100,light); u32 length = strlen((char*)command); sprintf((char*)finalcmd, "AT+CIPSEND=%d\r\n", (int)length); u32 cmdlength =strlen((char*)finalcmd); xil_printf("Length %d\r\n", length); xil_printf((char *)finalcmd); ESP32_SendBuffer(&ESP32, finalcmd, cmdlength); sleep(1); xil_printf((char *)command); ESP32_SendBuffer(&ESP32, command, length); receiveData(4); } Thanks helloworld1029. Cpp Code Update 1.txt
  17. hi, I have been facing issue and I want to figure out what type of reasons can cause it? Connection issue? Or sth else? For installing my program into the zybo board, it sometimes works while sometimes pop up this error message. Like intermittently working. Here are some error message: targets -set -filter {jtag_cable_name =~ "Digilent Zybo Z7 210351AD668FA" && level==0} -index 1 fpga -file C:/Users/lukel/workspace8/test_3/_ide/bitstream/design_7_wrapper.bit targets -set -nocase -filter {name =~"APU*"} loadhw -hw C:/Users/lukel/workspace8/design_7_wrapper/export/design_7_wrapper/hw/design_7_wrapper.xsa -mem-ranges [list {0x40000000 0xbfffffff}] configparams force-mem-access 1 targets -set -nocase -filter {name =~"APU*"} source C:/Users/lukel/workspace8/test_3/_ide/psinit/ps7_init.tcl ps7_init ----------------End of Script---------------- 15:56:02 ERROR : Memory read error at 0xF8006050. Invalid DAP IDCODE. Invalid DAP ACK value: 0 Thanks Luke
  18. I'm following along with the instruction provided on the GitHub (https://github.com/Digilent/Zybo-Z7-10-HDMI/blob/master/README.md) to test the functionality of the Zybo board's HDMI ports. I followed the instruction to the T but cannot seem to get a signal to pass through. At first, I connected my cable box to the HDMI Rx and then I switched to my laptop. In both instances, not only did my TV monitor not detect a signal, but the output on the sdk terminal was that the HDMI-in was unplugged (see first attached photo). The HDP / LD9 LED near the HDMI port turns on, telling me it is detecting a signal. Using the Zybo-Z7 reference manual, I deduced that it might be due to an issue with resolution, but if I try to change the resolution, I get 'stuck' in that menu (see second attached photo) and have to restart the processes by clicking run-as -> Launch on Hardware. I also notice the clock frequency is set to 0, but I'm not exactly sure what could be the issue. I have also attached the block design and xdc file as I'm assuming the issue could be there since the pixel clock isn't running. design_1.pdf Zybo-Z7-Master.xdc
  19. For my project, I was asked to use the xadc portion of the zybo board to read the data from the DFRobot Gravity Analog Electrical Conductivity (EC) Sensor. The link of the sensor is here: https://www.dfrobot.com/product-1123.html Just to give a summary on this product, it has the supply voltage of 3V to 5V and output voltage of 0V to 3.4V. I have asked this question before, maybe due to the unclarity of the question, nobody has answered me. The link is here: I have been trying to learn the basics of xadc and attempted some project. I created one project which allows me to read the data from ZYBO's internal temperature, voltage and the external analog input source (if that is correct) The block design, the code, the zipped vitis file and the outcome are below. Additionally, I have tried the sensor in my Arduino. The detail will be shown below as well. Here are some areas of concern. 1) I knew that for zybo xadc, it only supports the supple voltage up to 1V ONLY but my sensor output voltage can go up to 3.4V. I am worried if I straightly connect my analog input of the sensor into the zybo xadc output at port A. The Zybo Board may be damaged. So is there a way to minimise the output voltage so that the analog input can successfully insert into the zybo without damaging the board. I am thinking of using 2.2K ohm and 4.7K ohm resistor in series to solve the issue but I am not certain about that. 2) If the zybo can configure the DF Robot Gravity EC sensor smoothly through using resistors or other means, how can I ensure the result is accurate? Also, how should I transfer my code in Arduino into the Vitis Code. Do I need to change my Arduino code by a lot in order to allow the Vitis to understand. Thanks in advance helloworld1029 xadc_code (1).txt Electrical Conductivity Code For Arduino.txt workspace_sensor.zip
  20. I am currently doing the vertical farming project. And I want to put my Pmod HYGRO and Pmod AQS sensor into the same port JC. I have tried to put my Pmod HYGRO and Pmod AQS into different Pmod ports successfully. Now, I just want to combine these two sensors into one port. For example, for port JC. I want the top layer of the port connect to Pmod AQS and the bottom layer of the port to the Pmod HYGRO. So what is my first step to do when comes to vivado block design and how am I going to write my Cpp code into Vitis IDE? I did some primary research on this topic before. I may need to use AXI IIC or something else. Is that true? Also, if using AXI IIC, how am I going to connect the Pmod to the AXI IIC and connect the specific pin of Pmod to the specific pin of the port? Thanks in advance. Below is my vivado block design so far?
  21. Hello everyone, Just a quick question: is the ADP5052 pmic on Zybo monitoring all the voltage outputs (for PGOOD) or only the first channel (3V3)? Thank you in advance! Greetings, Peter
  22. Hello All, I am not at all experienced in FPGAs, the only thing I did is in ALTERA in bachelor studies course and recently the Xilinx Zybo board and made a LED blink or a full-adder examples. I am however finding it difficult and frustrating to try to program the flash memory in the Zybo board to make my code non-volatile, after many trials and looking at other examples that do not describe this process step by step there is only ending up quitting. i came across things like FSBL (First Stage Boot Loader), along with the bit stream from Vivado project, then i wanted to avoid the SDK by using only Vivado and exporting the hardware which requires other stuff like a block design which require other stuff like IP blocks and connecting things together that i have no idea about. It's an interconnected mess for me. I would really appreciate someone who came across that and describe the process in simple details. Sorry if i lack some basics, my aim at the end is to read a PWM signal (frequency and duty cycle) and produce them again by changing them e.g. input is 5 kHz and 90% and output from FPGA is 5 kHz and 60%, the FPGA should act as a duty cycle limiter. My chip is: Zybo (xc7z010clg400-1) (picture attached) Software: Vivado 2018.1 Best regards, MJ
  23. AzU

    Video Timing

    Hey, I've trouble getting output from VGA to my Monitor. I'd like to find the Video Timing of my Zybo Zynq-7000 Board. How would I find that? - AzU
  24. I am trying to connect my PMOD MTDS to the Zybo Z7, without Arduino. I have integrated the IP files, connected it via block diagram, and set up a FAT32 microSD with the 2 files that are needed also. When trying to connect to Vivado I can seem to figure out how to get to the console for which I can do MTDS Firmware code so I can do a custom UI. Documentation does not help much with connecting this PMOD. Please advise if you're familiar thanks.
  25. I have successfully compiled, flashed, and ran the hdmi in example project in the digilent github repo. However, no matter the hdmi source I use, I cannot get the hdmi to connect to the Zybo dev board. The CRT monitor is displaying the VGA output, and I can change resolution and frame buffers. However, I always get an !HDMI unplugged! error on the uart output. My windows machine recognizes the "monitor" and I can change the resolutions on the windows side of things, but no matter the resolution I cannot get the connection to go through. See attached screenshot. This is very frustrating for me. Any help would be appreciated. This is the 3rd or 4th tutorial/example I have tried since getting the board today. All in all everything has gone smoothly up to this point, but I have not the fpga/vivado experience to determine the issue. also my log output from vivado is attached. implementation.txt
×
×
  • Create New...