This shows you the differences between two versions of the page.
Previous revision | |||
— | multiple_subdevices_with_the_same_number_of_ports [2016/02/25 13:32] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Multiple subdevices with the same number of ports ====== | ||
+ | If multiple subdevices of the same type, same number of ports and different '' | ||
+ | |||
+ | |||
+ | ===== Error description ===== | ||
+ | The synthesis of the system throws following, or similar, errors in Quartus: | ||
+ | < | ||
+ | < | ||
+ | |||
+ | |||
+ | ===== Cause ===== | ||
+ | Because the ports of the subdevice are identical, Qsys creates only one component (block) and uses multiple instances of this component. But each subdevice has a unique id, which is why each subdevice needs a different component. Qsys generates an *.vhd file for each component with a name like '' | ||
+ | |||
+ | ===== Solution ===== | ||
+ | Create the missing components manually and integrate them in the generated system. An existing component can be copied and modified. | ||
+ | |||
+ | ==== 1.) Generate the system in Qsys ==== | ||
+ | Generate the system in Qsys | ||
+ | |||
+ | ==== 2.) Copy and modify the components ==== | ||
+ | * Go to the folder '' | ||
+ | * For each group of subsystem with identical ports there is one *.vhd-file. For Example '' | ||
+ | * For each member of such a group create a copy of the template(s) and renumber them accordingly. For Example: '' | ||
+ | * In each copy 7 lines has to be modified: | ||
+ | - The name of the entity at the beginning of the entity declaration < | ||
+ | - The '' | ||
+ | - The name of the entity at the end of the entity declaration < | ||
+ | - The name of the architecture at the beginning of the architecture declaration < | ||
+ | - The '' | ||
+ | - The name of the component at the start of the component declaration: | ||
+ | - The '' | ||
+ | |||
+ | ==== 3.) Modify the *.qib-file ==== | ||
+ | At approximately line 10 add a new line for each copy created in the last step. The name and the number of the block have to be adapted. | ||
+ | < | ||
+ | |||
+ | ==== 4.) Modify the main *.vhd-file === | ||
+ | * The main *.vhd-file has the same name as the Qsys. For example: '' | ||
+ | * Search for the component declaration of your template(s) | ||
+ | * Make a copy of the declaration for each copy made in step 2 | ||
+ | * Modify the names of the new declarations (first and last line of the declaration): | ||
+ | < | ||
+ | |||
+ | --... shortened ... | ||
+ | |||
+ | end component test01_gpio_block_1;</ | ||
+ | * Find the port map for all blocks which belong to the new created components | ||
+ | < | ||
+ | * Adapt the component names | ||
+ | < | ||
+ | |||