Search the Community
Showing results for tags 'xadc basys 3'.
Found 2 results
-
Setting the 8 bits of addr_in in order to monitor Temperature on XADC
Mariam Rak posted a question in FPGA
Hello, I am kind of new to FPGAs and I am trying to use the XADC in order to monitor the temperature sensor: I am using Vivado 2018.2, Nexys video as a board. I used the IP catalog in order to set up the XADC as following: DRP, Single channel, continuous, disable all alarms, disable reset_in, channel to monitor: temperature I wrote a top level module which reads the bits 4 up to 7 from do_out and light up LEDs accordingly: //part of the top module: module top( input CLK100MHZ, input vp_in, input vn_in, input [1:0] sw, output reg [11:0] LED ); wire enable; wire ready; wire [15:0] data; reg [6:0] Address_in; xadc_wiz_0 XLXI_7 (.daddr_in(Address_in), //addresses can be found in the artix 7 XADC user guide DRP register space .dclk_in(CLK100MHZ), .den_in(enable), .di_in(0), .dwe_in(0), .busy_out(), .vn_in(vn_in), .vp_in(vp_in), .alarm_out(), .do_out(data), .eoc_out(enable), .channel_out(), .drdy_out(ready)); always @( posedge(CLK100MHZ)) begin if(ready == 1'b1) begin case (data[7:4]) 4'b0001: LED <= 12'b000000000001; 4'b0: LED <= 12'b0; 4'b1000: LED<=12'b000000000010; default: LED <= 12'b1; endcase end end ///// I have one problem though, as I come to set the address of the ddr_in as done in a documentation found here which has LEDs displaying potential differences monitored by XADC, I do not understand what 8 bit address I should assign for the DRP to monitor the Temperature Channel ! "Address_in <= 8'h ????" My goal: I need the LEds to display something for the sake of demonstration that I am able to read values out of the do_out. Thank you for your help. -
Hi, I have used XADC IP Core on my Basys 3 board, I am unable to get updated value. i Keep getting 0V Can you please help me out with this. I have attacthed the block design and SDK Code. Kind regards R Vishnu Kumar Code #include <stdio.h> #include "xparameters.h" #include "xsysmon.h" #include "xil_cache.h" //#include "xsysmon.h" #include "sysmon_header.h" #define SYSMON_DEVICE_ID XPAR_SYSMON_0_DEVICE_ID //ID of xadc_wiz_0 static XSysMon SysMonInst; //a sysmon instance //static int SysMonFractionToInt(float FloatNum); int main() { u32 TempRawData,VccIntRawData,ExtVolRawData; float TempData,VccIntData,ExtVolData; int xStatus; XSysMon_Config *SysMonConfigPtr; XSysMon *SysMonInstPtr = &SysMonInst; //init_platform(); printf("Hello World\n\r"); printf("Test1\n\r"); //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ SysMon Initialize SysMonConfigPtr = XSysMon_LookupConfig(SYSMON_DEVICE_ID); if(SysMonConfigPtr == NULL) printf("LookupConfig FAILURE\n\r"); printf("Test2\n\r"); xStatus = XSysMon_CfgInitialize(SysMonInstPtr, SysMonConfigPtr, SysMonConfigPtr->BaseAddress); if(XST_SUCCESS != xStatus) printf("CfgInitialize FAILED\n\r"); printf("Test3\n\r"); //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ XSysMon_GetStatus(SysMonInstPtr); // Clear the old status XSysMon_SetSequencerMode(SysMonInstPtr, XSM_SEQ_MODE_SINGCHAN); XSysMon_SetAlarmEnables(SysMonInstPtr, 0x0); //XSysMon_StartAdcConversion(SysMonInstPtr); while(1) { //wait until EOS activated while ((XSysMon_GetStatus(SysMonInstPtr) & XSM_SR_EOC_MASK ) != XSM_SR_EOC_MASK ); VccIntRawData = XSysMon_GetAdcData(SysMonInstPtr,XSM_CH_VPVN); //Read the on‐chip Vccint Data VccIntData = XSysMon_RawToVoltage(VccIntRawData); printf("The Current VCCINT is %0d Volts. \n\r",VccIntData); XSysMon_ResetAdc(SysMonInstPtr); usleep(5000000);XSysMon_GetStatus(SysMonInstPtr); // Clear the old status //XSysMon_SetSequencerMode(SysMonInstPtr, XSM_SEQ_MODE_SINGCHAN); XSysMon_SetAlarmEnables(SysMonInstPtr, 0x0); //XSysMon_StartAdcConversion(SysMonInstPtr); } return 0; } //‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐