Home    Bloggers    Messages    Webinars    Resources   
Tw  |  Fb  |  In  |  Rss
Jacek Hanke

What to Look for When Selecting Third-Party IP, Part 6

Jacek Hanke
Page 1 / 2 Next >
Page 1 / 2   >   >>
Karl
Karl
2/9/2013 11:37:36 AM
User Rank
Guru
Re: A rookie view
@JezmoSSL  And the next step was to define Visual C# OOP classes for memory blocks and the combinational logic, tie it together using get/set property accessors that are analogous to continuous assignments in Verilog.  The memory classes have din methods to remember the values to be assigned by the launch methods and I have a cycle simulator that runs in Visual Studio with all its OOP debug capability.

Sometimes it seems that the level of abstraction makes it difficult to debug my own design.

Thanks for the comment.

50%
50%
JezmoSSL
JezmoSSL
2/9/2013 10:49:11 AM
User Rank
Blogger
Re: A rookie view
@karl you can do the same thing in the xst project manager, pretty much the same idea.

50%
50%
Karl
Karl
2/9/2013 9:00:28 AM
User Rank
Guru
Re: A rookie view
@Hamster:  With Quartus you can open the design file(which is HDL), Modify then create a new block symbol file.  Yes it is kind of like the chicken and egg initially, but if you have an idea of the basic block function -- at least inputs/outputs -- start with HDL and connect the external lines graphically.  I think Quartus then uses the HDL to create the block interconnects so the block diagram is just a graphic view of the HDL.

Since the blocks are created from HDL and I think it is possible to create a top level block for the block schematic which would also have an HDL design file so there is probably a way to have source control over the HDL and also to have the block graphics.

My current design has a few memory blocks, an HDL ALU, and an HDL module of combinatorial logic.  The memory blocks were created by MegaWizard and the other 2 blocks are Verilog.  Bus and control signal lines are drawn in where desired or just connected by name(properties) to reduce clutter.  So my custom blocks originated as Verilog and the block schematic has the graphic view.

To change/modify a block, open the design file and edit the HDL rather than try to zoom and edit graphically.  I have not attempted to create an heirarchy of schematics so am not sure if it can be done.

 

50%
50%
hamster
hamster
2/9/2013 1:09:41 AM
User Rank
Blogger
Re: A rookie view
I've only used the schematic tool from Xilinx's ISE, but the problem I have is that unlike using pen and  paper I haven not found a way to an empty box, draw lines into it, and then zoom in on the empty box and design its content.

This makes top down design hard with the schematic tool, and designing from the bottom up is hard unless you already have some sort of design planned out.

With HDLs I can bounce around like a Jack Russel before a walk.

50%
50%
Karl
Karl
2/8/2013 1:42:17 PM
User Rank
Guru
Re: A rookie view
@Jacek: "I can just add that I would suggest to start designing the FPGA using the FPGA Vendor's schematic tool. When using schematic tools, designing the FPGA content with embedded CPU doesn't differ a lot, from the typical application design using standard components and PCB."

This is very sound advice.  The problem always becomes that the discussion always gets hi-jacked and becomes centered around coding styles and inference.  BUT to explain concepts and ideas the first thing asked for is a block diagram.  So it makes sense to start with a block diagram and enhance it as the design progresses.  That does not mean that schematic entry is used for RTL level, but the block symbols on Quartus block diagrams are generated from an HDL design file that can be opened to expose the HDL.  Another important thing is the block connections can be made visible or simply named as properties of the block.

A well designed block diagram that has functional names for blocks , busses, and nets is universally understood whereas Verilog and VHDL designers have a huge communications gap.

 

50%
50%
Duane Benson
Duane Benson
2/8/2013 12:21:38 PM
User Rank
Blogger
Re: A rookie view
Jacek - re: "I meant that every IP Core we offer, has got its own specification, but when a customer tells us what he/she exact needs - we're tailoring our core to his/her needs" I applaud you for this. It's makes a customer's life a whole lot easier.

50%
50%
Duane Benson
Duane Benson
2/8/2013 12:19:47 PM
User Rank
Blogger
Re: A rookie view
Jacek, Rfindley - This is very good information. It makes sense now and I don't feel so intimidated by the concept as I did. Right now, I'm jumping into simulation and VHDL, but I think I can give an embedded CPU a try right after that.

50%
50%
Jacek Hanke
Jacek Hanke
2/8/2013 4:00:42 AM
User Rank
Blogger
Re: A rookie view
And re the second part... rfindley thanks a lot for your help :) I can just add that I would suggest to start designing the FPGA using the FPGA Vendor's schematic tool. When using schematic tools, designing the FPGA content with embedded CPU doesn't differ a lot, from the typical application design using standard components and PCB.

Difference is that you do not need to design PCB, but only design a correct schematic of your application. Inside the FPGA you simply put the CPU symbol on your schematic, do the same with needed memories, I/O buffers and other stuff, compile and ... that's all.

In the embedded CPU and FPGA internal blocks, all the busses are unidirectional with separated DATAI, DATAO and ADDRESS busses. So you simply connect CPU address bus with the address on memory, DATAO from CPU to DATAI in memory, and CPU DATAI to DATAO from memory.

Designing the I/O's, There is no problem with the ordinary Input or Output Pins, which are simply connected to inputs or outputs on CPU.

With the bidirectional pins, you need to use one of the available inside the FPGA buffers. Open drain, Tri State buffer etc.

50%
50%
Jacek Hanke
Jacek Hanke
2/8/2013 3:58:38 AM
User Rank
Blogger
Re: A rookie view
Duane thanks for that. I meant that every IP Core we offer, has got its own specification, but when a customer tells us what he/she exact needs - we're tailoring our core to his/her needs. And re ...

50%
50%
rfindley
rfindley
2/6/2013 8:00:29 PM
User Rank
Blogger
Re: A rookie view
I haven't tried this with AXI yet, but I assume it's similar to how PLB works: Xilinx EDK has a wizard for generating an interface to your code. You can choose either a 'register' interface to your code (in which case it generates a chip-select for each register), or 'memory'-style interface (in which case it generates a single chip-select that is active for an address range). If your code can respond to the bus in one clock cycle, then you can simply wire the rd_ack directly to the rd, and the wr_ack directly to the wr, and you must read/write data from/to the bus in one bus clock cycle. That is the simplest method.
process(bus_clk)
begin
  if (rising_edge(bus_clk)) then
    if (bus_cs0='1' and bus_wr='1') then
      leds <= bus_data(0 to 3);
    end if;
  end if;
end process;

bus_rdack <= bus_rd;
bus_wrack <= bus_wr;

Hopefully, my kindle won't remove the paragraph spacing when I submit this comment. If so, I'll fix it later.

50%
50%
Page 1 / 2   >   >>
More Blogs from Jacek Hanke
In this blog we can share our experiences on the topic: "What kind of support can I get from you?"
In order to implement the components of a new chip design, any IP core should be delivered with everything needed to design, test, and validate that core in the target product.
A knowledgeable and skilled IP core development team will always be able to adapt to new requirements based on previous experience.
If you are interested in licensing a third-party IP core, it's a good idea to ensure that the vendor can also supply you with the debugger. The ideal situation is to obtain the debugger together with the IP core -- all from one vendor.
flash poll
follow us on twitter
follow Xilinx on twitter
like us on facebook
like Xilinx on facebook
All Programmable Planet     About Us     Contact Us     Help     Register     Twitter     Facebook     RSS