Hi all, I'm trying to learn verilog, I'm new in the FPGA world, I got the very basics of verilog, and one very important thing is how to communicate the FPGA with a computer.
To who is written this.., well anyone interested in newbies difficulties, who want to write guides, and for Digilent too.
I want to ppl understand here, why is hard for a newbie learn UART, even before the implementation. I want you to understand why I can't understand. And later, in case I succeed to show you that, help me and others, to learn UART in a better experience and with that, open more the FPGA world, I still can't understand very well UART.
Sorry if this text is too long, or even sounds too pretentious.
Personally, has been too hard to get how works verilog, verilog is not difficult, but is hard to find documentation that understand its own common sense, ppl a lot of times tries to explain (with good will) but didn't notice that a lot of words, concepts, logic states of the guide/project are still not explained, so ppl will not be able to understand what they just don't know, well I found a doc about verilog very good about it.
I think is the most complete I have found, read from the start to get it, special for newbies like me:
Oks, go to the topic, I have checked a lot of videos, longs and short ones, codes of github, guides, and there is always a point where something is not explained and I ends in confusion. I would appreciate don't says, "read this one", one reason why I can't understand very well this is due the same as above in verilog, there is common sense and experiences that a newbie does not have way to know. You will understand this better later, I wrote that down :)
I want to understand UART, I think is great to then can construct more robust projects, so the point is not just test and found "it works".
I like Digilent due to the opportunity to learn FPGA, I think would be great have projects in different languages, the repertory of type of projects is big, but usually every project is in one or other language, the blink led is in verilog, the GPIO (and UART) in VHDL, does not help to learn D:
A hardest part of the UART protocol, is not the protocol it self, FPGA controls bit a bit. Well, an FPGA does not need to come with UART, but we can buy a PMOD and connect it (or come with one integrated how the one I have), and we can know UART also has a protocol, now some questions, who follow the protocol?, how much of the protocol the PMOD handle, and how much we need to implement in the FPGA? Maybe even, the PMOD uses the UART protocol for the PC but uses other protocol in the FPGA connection! but why? maybe who design it found a easier way to send the data from the FPGA to the PC using the UART protocol.
Then there is the same questions for the UART from the PC... Maybe this is silly for you, but for a newbie like me this is just a mist of confusion.
To can understand UART is not enough know Verilog and UART protocol, there is a mix of experience, and common sense, things that are usually not written.
I though, well, what would be a newbie explanation that anyone can understand about the UART data flow? I want to take advantage of my current newbie status to get a clear way of it.
My answer now was, examples!, what? there is a lot of examples out there!, yea, they explain a lot of things, but did you remember? usually every example has a sections that are not explained, add what I wrote above, is not like a newbie can fully understand any example.
I think before the example, explain the steps is good, but probably we will not be able to understand the big picture.
Imagine an example like this, and we want from the FPGA send '11101010101', what would be flow of information? what would be the step 1?, step 2?, step 3?, how is used and splited the data? you maybe will says, there is a lot of guides that does that exercise, but..., not completely, when you are forced to show this step by step with that data you can't skip anything, need to show what bits sends and why, justify every bit of information!
FPGA ---------- PC
'010010001010' -> (explain where it comes that data)
'1010100111010' -> (explain where it comes)
The idea would be explain how the data is send to the PC, where and how every rule is applied, a good example should be able to use all the rules of the protocol, with examples where we can see the difference between them. There is the proposal of start with the minimum applicable rules (like skip parity bit), and is good to know for example when or how it works, how a pc know there is parity or not and similar with the other rules.
One advantage of something like this, is that we don't need know verilog, we only need to know the workflow of UART, this helps to understand how much of the UART protocol we need to implement in verilog, and how much its handled by the UART PMOD. Then, we can start thinking..., how can I write this workflow in Verilog?.
Then, the same would be to can read data from the PC.
FPGA ---------- PC
<- '001010010101' (explain how we can read the data)
Maybe the simplest part, is the baud rate generator, just because every FPGA has its own frequency, and UART need some specific baud rate to work and synchronize with the PC. The only weird thing about it would be that seems did not works any baud rate.., weird, but how to construct one with +-5% of error is pretty simpler, then just connect the wire, but not trivial to put for a newbie.
I think I wrote everything I had in mind to explain from my newby perspective why is so hard learn UART, I decided to write like this, and give a feedback from someone who know about algorithm but not FPGA why would be so hard to understand this things, would be great if this feedback is considered in Digilent guides.
I would appreciate if someone can helps to create examples to help to understand this for newbies :)
The bits I choose in the transmitter are intended, a number of bits that is not 10 nor 18 (full block of data), and need at least two packets :)
Question
latot
Hi all, I'm trying to learn verilog, I'm new in the FPGA world, I got the very basics of verilog, and one very important thing is how to communicate the FPGA with a computer.
To who is written this.., well anyone interested in newbies difficulties, who want to write guides, and for Digilent too.
I want to ppl understand here, why is hard for a newbie learn UART, even before the implementation. I want you to understand why I can't understand. And later, in case I succeed to show you that, help me and others, to learn UART in a better experience and with that, open more the FPGA world, I still can't understand very well UART.
Sorry if this text is too long, or even sounds too pretentious.
Personally, has been too hard to get how works verilog, verilog is not difficult, but is hard to find documentation that understand its own common sense, ppl a lot of times tries to explain (with good will) but didn't notice that a lot of words, concepts, logic states of the guide/project are still not explained, so ppl will not be able to understand what they just don't know, well I found a doc about verilog very good about it.
I think is the most complete I have found, read from the start to get it, special for newbies like me:
https://verilogguide.readthedocs.io/en/latest/
Oks, go to the topic, I have checked a lot of videos, longs and short ones, codes of github, guides, and there is always a point where something is not explained and I ends in confusion. I would appreciate don't says, "read this one", one reason why I can't understand very well this is due the same as above in verilog, there is common sense and experiences that a newbie does not have way to know. You will understand this better later, I wrote that down :)
I want to understand UART, I think is great to then can construct more robust projects, so the point is not just test and found "it works".
I like Digilent due to the opportunity to learn FPGA, I think would be great have projects in different languages, the repertory of type of projects is big, but usually every project is in one or other language, the blink led is in verilog, the GPIO (and UART) in VHDL, does not help to learn D:
A hardest part of the UART protocol, is not the protocol it self, FPGA controls bit a bit. Well, an FPGA does not need to come with UART, but we can buy a PMOD and connect it (or come with one integrated how the one I have), and we can know UART also has a protocol, now some questions, who follow the protocol?, how much of the protocol the PMOD handle, and how much we need to implement in the FPGA? Maybe even, the PMOD uses the UART protocol for the PC but uses other protocol in the FPGA connection! but why? maybe who design it found a easier way to send the data from the FPGA to the PC using the UART protocol.
Then there is the same questions for the UART from the PC... Maybe this is silly for you, but for a newbie like me this is just a mist of confusion.
To can understand UART is not enough know Verilog and UART protocol, there is a mix of experience, and common sense, things that are usually not written.
I though, well, what would be a newbie explanation that anyone can understand about the UART data flow? I want to take advantage of my current newbie status to get a clear way of it.
My answer now was, examples!, what? there is a lot of examples out there!, yea, they explain a lot of things, but did you remember? usually every example has a sections that are not explained, add what I wrote above, is not like a newbie can fully understand any example.
I think before the example, explain the steps is good, but probably we will not be able to understand the big picture.
Imagine an example like this, and we want from the FPGA send '11101010101', what would be flow of information? what would be the step 1?, step 2?, step 3?, how is used and splited the data? you maybe will says, there is a lot of guides that does that exercise, but..., not completely, when you are forced to show this step by step with that data you can't skip anything, need to show what bits sends and why, justify every bit of information!
FPGA ---------- PC
'010010001010' -> (explain where it comes that data)
'1010100111010' -> (explain where it comes)
The idea would be explain how the data is send to the PC, where and how every rule is applied, a good example should be able to use all the rules of the protocol, with examples where we can see the difference between them. There is the proposal of start with the minimum applicable rules (like skip parity bit), and is good to know for example when or how it works, how a pc know there is parity or not and similar with the other rules.
One advantage of something like this, is that we don't need know verilog, we only need to know the workflow of UART, this helps to understand how much of the UART protocol we need to implement in verilog, and how much its handled by the UART PMOD. Then, we can start thinking..., how can I write this workflow in Verilog?.
Then, the same would be to can read data from the PC.
FPGA ---------- PC
<- '001010010101' (explain how we can read the data)
Maybe the simplest part, is the baud rate generator, just because every FPGA has its own frequency, and UART need some specific baud rate to work and synchronize with the PC. The only weird thing about it would be that seems did not works any baud rate.., weird, but how to construct one with +-5% of error is pretty simpler, then just connect the wire, but not trivial to put for a newbie.
I think I wrote everything I had in mind to explain from my newby perspective why is so hard learn UART, I decided to write like this, and give a feedback from someone who know about algorithm but not FPGA why would be so hard to understand this things, would be great if this feedback is considered in Digilent guides.
I would appreciate if someone can helps to create examples to help to understand this for newbies :)
The bits I choose in the transmitter are intended, a number of bits that is not 10 nor 18 (full block of data), and need at least two packets :)
Thx!
Edited by latotLink to comment
Share on other sites
11 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now