Leaderboard


Popular Content

Showing content with the highest reputation since 09/16/19 in all areas

  1. 1 point
    First of all the Project Vault is a place to post working projects, not ask questions; so this post belongs somewhere else. Doing things and knowing how they work are often two different challenges. Understanding how to create a tone and how to implement LTE are worlds apart. Wanting to understand the concepts for both are worthwhile goals. I'd advise starting with a good textbook. Janak Sodha's book Fundamentals of Communications Systems is a good introductory text with lots of accessible examples. Analog Devices has a number of good application notes texts available as well. Beware that there is a lot of math involved. Fortunately, one doesn't have to do brute force math to implement basic signal creation. To start, consider a vector. It has length and an angular orientation relative to some X-Y coordinate system. If you pin the tail to a fixed point and spin the head of the vector around at a constant rate you've created the basis for a tone. The basic building block of a tone generator is the phase accumulator. The phase accumulator is nothing more than an adder where you don't care about overflow. The time it takes between overflows represents the tonal frequency. Of course tones are sinusoidal so the actual tone requires using the accumulated phase as a pointer into a sine or cosine lookup table. And that's the 10 second introductory lecture on communications. Now if you suppose that creating a tone and creating the exact tone with the qualities that you want might be a bit more complicated then you assume correctly; but dealing with the details isn't a 10 second presentation. Now, you can do all sorts of interesting things with your rotating vector like modulate ( vary ) its magnitude for AM. Or, instead of changing the phase input to your phase accumulator at a constant rate you can modulate the input to do FM or PM. If you create a number of different tones and add them you can encode information that can be extracted by finding which tones make up the signal. There's quite a leap from there to modern communications in terms of what you need to understand but that's the fun. All of these can be implemented in FPGA logic with a lot of knowledge and a bit of insight. Communications is little more than creating and manipulating tones with some sophisticated conditioning involved. Conditioning is important because poorly designed or constrained communications interfere with other even well designed communication systems. That's why the experimenter needs to be careful building hardware that transmits signals. Drowning out an FM station that you are listening to while playing around with your hardware might be fun for you but will not be so much fun for your neighbours; particularly if they are dependent on a communications system like police and firemem or pilots. The pioneers of modern communications were mathematicians like Fourier, Laplace and Euler who understood the basic concepts long before other very smart people got around to playing with tonal generation for transmitting and receiving information. And all of it is possible because someone had some insight that made the very difficult practical to implement.
  2. 1 point
    Hi @sgrobler, I've build a 64-bit executable for Windows, which you can download from here. Save that into a location you're likely to remember. Refer to the repository README for instructions on how to use the executable. Regards, AndrewHolzer
  3. 1 point
    Executables will be posted in the next few days. But if you'd like to build it on Windows you can do one of the following: Install git for windows Install cygwin If you have Win 10, you can install a Linux Subsystem within Windows Ubuntu Other distributions If you don't want to use git clone, you can download the source repository as a zip file.
  4. 1 point
    mmdsaifudn

    SREC SPI Bootloader is Very Slow

    @bhall Thanks a lot bhall for giving info.I got this elf bootloader working when I started from scratch.
  5. 1 point
    @JColvin I wasn't able to use the Add Design Tools or Devices function due to administrator controlled system, but I was able to reinstall from scratch and fixed the issue. Thanks @JColvin and @Bianca!
  6. 1 point
    Hi @sgrobler and @benl, I was informed today that a conversion process of converting a dlog file into csv is now tested and working for OpenLogger and OpenScope MZ and is documented here: https://reference.digilentinc.com/reference/software/waveforms-live/how-to-convert-dlog. If you have any questions on this, I will try to answer them, but may end up deferring to @AndrewHolzer for the technical side of things. Thanks, JColvin
  7. 1 point
    bhall

    SREC SPI Bootloader is Very Slow

    Exactly. You should be able to program the flash using the same method, just without having the convert to SREC box checked.
  8. 1 point
    Peggy

    an easy way to read log file by MATLAB

    Hi everyone, I found an easy way to read .log file by MATLAB. MATLAB has functions to read binary file but the difficulty is that we are not sure about the header and format of the log data. I am not familiar with Python so the other way that posted by benl using Python is such a pain to me. Here are a few lines that can easily decode .log file with two channels of data: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Read Data from OpenLogger file close all;clear;clc logfilename = '20190723_9_0.log'; finfo = dir(['F:\' logfilename]); channelNum = 2; %number of channels sampleNum = finfo.bytes/2/channelNum; fileID = fopen(logfilename); logdata = fread(fileID,[channelNum sampleNum],'int16=>int16'); fclose(fileID); headerNum=257; plot(logdata(1,headerNum+1:end),'-'),hold on %channel 1 plot(logdata(2,headerNum+1:end),'-'),hold off %channel 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% WaveForms Live read in Matlab Note: I don't care about the header info so I just get rid of it. I use random input pulses for ch2; The two plots are not from the same time. peggy
  9. 1 point
    Bianca

    Unable to download Adept 2

    Hi @Mahmood ul Hassan, I just tried and it works. You have to fill in the form and the download will start. Regards, Bianca
  10. 1 point
    Hi @m72 After adding the Order option in Logic Analyzer (splitting the Input selection in two) I have forgotten to update the Protocol/Logic Analyzer to set the Order option automatically. Thank you for the observation, it is fixed for the next release.
  11. 1 point
    Hi @m72 This looks like a digital issue in the ADC. Have you used for this tests the WF v3.11.23 I sent you in private message?
  12. 1 point
    I would look on Analog Device's wiki. Also look for how to cross compile QT.
  13. 1 point
    Hi @Lesiastas The rg0 will get its value after you step over the respective line, after the decode function is executed. Byte sampling: Module Module1 Function decodeUart(ByRef rgData() As Byte, ByVal cSamplePerBit As Integer, ByVal pin As Integer) As List(Of Byte) Dim pData As Boolean Dim fData As Boolean = False Dim cSamples = rgData.Length Dim rgUart As New List(Of Byte) For i As Integer = 0 To cSamples - 1 Dim s = rgData(i) pData = fData fData = 1 And (s >> pin) If pData <> 0 And fData = 0 Then Dim bValue As Integer = 0 For b = 0 To 7 Dim ii = Math.Round(i + (1.499 + b) * cSamplePerBit) ''''' If ii >= cSamples Then Exit For End If s = rgData(ii) fData = 1 And (s >> pin) If fData Then bValue += (1 << b) End If Next rgUart.Add(bValue) i += cSamplePerBit * 9.499 - 1 ''''' 1 start + 8 bits + 0.5 stop -1 because For will increment End If Next Return rgUart End Function Sub Main() Dim hdwf As Long If FDwfDeviceOpen(-1, hdwf) = False Then Dim szError As String FDwfGetLastErrorMsg(szError) System.Console.WriteLine("Device open failed" & vbCrLf & szError, vbExclamation + vbOKOnly) End End If Const hzUart = 9600 Const hzRate = hzUart * 1 ''''' Const cSamples = 1000 Dim hzDI As Double FDwfDigitalInInternalClockInfo(hdwf, hzDI) FDwfDigitalInTriggerSourceSet(hdwf, trigsrcDetectorDigitalIn) FDwfDigitalInTriggerSet(hdwf, 0, 0, 0, &HFFFF) 'any falling edge 'FDwfDigitalInTriggerAutoTimeoutSet(hdwf, 10.0) FDwfDigitalInDividerSet(hdwf, hzDI / hzRate) FDwfDigitalInSampleFormatSet(hdwf, 8) FDwfDigitalInBufferSizeSet(hdwf, cSamples) FDwfDigitalInTriggerPositionSet(hdwf, cSamples - 10) FDwfDigitalInConfigure(hdwf, 1, 1) Dim sts As Byte While True If FDwfDigitalInStatus(hdwf, 1, sts) = 0 Then Return End If If sts = DwfStateDone Then Exit While End If End While FDwfDigitalInDividerGet(hdwf, hzRate) ' get the actual rate Const cSamplePerBit = hzRate / hzUart Dim rgData(cSamples) As Byte FDwfDigitalInStatusData(hdwf, rgData, 1 * rgData.Length) Call FDwfDeviceCloseAll() Dim rg0 = decodeUart(rgData, cSamplePerBit, 0) System.Console.Write("Hex 0: ") For i = 0 To rg0.Count - 1 System.Console.Write(" 0x" + Conversion.Hex(rg0(i))) Next System.Console.WriteLine() System.Console.WriteLine("Text 0: " + System.Text.Encoding.ASCII.GetString(rg0.ToArray)) End Sub End Module
  14. 1 point
    Bianca

    Pmod OLEDrgb thickness?

    Hi @BradLevy, We don't have a 3D drawind for the Pmod OLEDrgb but i measured it and it was 4.45 mm (~0.175") in thickness. And from the attached picture you can see that it's not higher than the Pmod Connetor. I hope this helps. Regards, Bianca