-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
please describe how to get started #1
Comments
Hi Maarten, The first step is to execute:
This will generate You can also just run If you use Windows I advise installing WSL and Ubuntu: If you want to change parameters just edit You can mix VHDL and Verilog in Vivado projects, that's no issue. I have not tested the generated vhd file but added a
|
Hello Tom, Thanks. I hadn't installed myhdl with --user, but that shouldn't be a problem, I guess. Instead I ran pip install as Administrator. This also shows I'm on Windows, but I have access to native Ubuntu machines and VirtualBox Ubuntu VM's as well. Indeed running make would be easier on Linux. Thanks for describing where to do the configuration. Once I opened the file I had seen that as well, but it would be nice if this was described in the readme. I would not have guessed how to generate the VHDL though. Your HDL-Deflate.xpr already has a board selected. But it normally does not auto-generate a design AFAIK. You must have clicked 'Create Block Design' in the project at some point. Are you saying there is nothing of interest in your design_1.bd? If so, then where is deflate.v inserted? I only see test_deflate_bench.v being used. Even test_deflate_bench.v doesn't seem to reference deflate.v. I'm wondering if I should just forget about the HDL-Deflate.xpr Vivado project and the test_deflate_bench.v test. Now for the deflate module. I see it has some inputs and outputs, but it's not quite clear to me what they mean. The clk and reset are obvious. I assume i_data is where the bytes come in, but when is it valid and how fast can I feed it? And o_byte is where the compressed data comes out, but again when is it valid? There are two progress indicators, but what's the difference or their meaning even? What is the meaning of o_done? And I have no clue what to feed into i_waddr and i_raddr either. I somehow had expected some streaming input and output, like e.g. an AXI4-Stream. Would you care to explain some more? Or is there a standard I should have read that uses similar definitions? Kind regards, |
@vanmierlo Yes, I think it's best to just forget about the HDL-Deflate.xpr Vivado project in the repository. In a fresh Vivado project you can just add the The best documentation is really in
which is the source for Near the top of The deflate module CAN stream and could be wrapped in a (VIvado) AXI-stream interface, but that is left as an exercise. It shouldn't be very hard, but I didn't want to invest time in a Xilinx or Vivado specific solution. I'll explain the ports:
When the stream is completely (de)compressed
|
Thanks again, So we cannot write and read at the same time, right? That's a pity. Does I wouldn't necessarily classify AXI-stream as a Xilinx specific solution, though I really don't know if anyone else natively supports it. It's defined by ARM and Xilinx has decided to adopt it. And I'm sure there are other streaming protocols out there like e.g. a Wishbone point-to-point interconnection. But I know of none as efficient as AXI-Stream. I'll start by examining |
I have another question: |
@vanmierlo The Python testbench uses Python3.6 specific deflate options when testing with Regarding your other questions: The last valid output byte always has address EDIT: You can READ/WRITE at the same time. So there really should be no issue embedding the current implementation in the standard Vivado AXI-Stream wrapper. If you write this wrapper (or a Wishbone wrapper) then I would be happy to merge it in this repository. I might also write one in the future myself, but I have currently no concrete usecase for such a wrapper. Finally, in general Vivado AXI implementations are not without issues: https://zipcpu.com/blog/2019/01/12/demoaxilite.html
|
Would you consider to rename reset to resetn as it appears to be active-low? |
Yes, I should or I could change the implementation to active-high which is best practice in FPGA land? Not sure, what is your preference? |
My preference is active-high, but active-low with renaming to resetn is okay as well. The current situation is confusing. |
I'm getting lost. You wrote:
Then I asked:
And now you answer:
Suddenly And likewise: You should not read at address |
The Vivado AXI article is about AXI-lite, not AXI-Stream. AXI-Stream is a much simpler protocol. Further, I've never used that core, but always wrote my own AXI-lite slave core which never gave any issues. If setting |
The generated VHDL deflate.vhd has a lot of bugs:
I don't know if it is the source or the myhdl converter, but this is totally useless, sorry. |
Sorry, I corrected the text in the original reply. It should be OK now. Regarding the VHDL, that's a MyHDL issue, nothing I can do about that. If it is ONLY a matter of different identifiers then please submit a PR with identifiers which are fine. If it is broken beyond repair, you have no choice but to use the verilog. Edit: I dropped the .vhd from the repo and changed |
Edit: |
It looks like the generated vhdl is beyond repair. Just for the fun of it, open deflate.vhd in Vivado and see all the red markers. I have now declared a component in vhdl and included the verilog file in Vivado.
I had to make some changes to the generated deflate.v to get things working:
And then I still have to delay It's all these out-of-sync progress indicators, addresses and data that makes this difficult to handle. This is all automatically fixed when using an AXI-Stream. And you could probably drop the output blockram as well. |
I think And the enumeration of states Also, can you explain why Btw. I think FAST is not about the achievable clock speed. But is it about low latency or about high throughput (measured in clock ticks)? |
I fixed the range two days ago: FAST is explained in the README. The only reason for Edit: CWINDOW is 32 when Edit 2: What do you mean regarding |
Hello,
This looks like a very interesting project.
But, since I have never used MYHDL could you please describe how to get started with for example the Vivado project? I managed to install MYHDL in Python, but what then? Am I supposed to run one (or all?) of the python scripts before I can open the project in Vivado? It seems so, but it does a lot more. And after that I still don't have design_1.bd which the project references.
Also, I don't understand Verilog well, but am used using VHDL. Would that be possible?
Then you state HDL-deflate can be configured. But how should that be done? At conversion time or at implementation time?
Kind regards,
Maarten
The text was updated successfully, but these errors were encountered: