How to model a system with independent clocks for HDL Code generation?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Felix Schneider
il 13 Giu 2018
Commentato: Felix Schneider
il 25 Giu 2018
Hello,
I'm working on a HDL project that uses several independent, asynchronous clocks. Specifically, there is an external clock for the input logic, an internal clock for processing and another external clock for the output logic.
Even though it is my understanding that asynchronous clocks can't be modelled in Simulink directly, the whole system should be contained in a single Simulink model for simulation and verification.
I think that the synchronisation logic between the different clock domains needs to be added by hand in Xilinx Vivado after code generation. I have attached a screenshot of the model's structure for clarification.
What is the best way to generate code for such a system? Is my general approach correct? How do I get HDL Coder to let me supply the different subsystems with different clocks?
Any help with this is appreciated, thanks in advance.
Felix
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/191238/image.png)
2 Commenti
Garrey Rice
il 20 Giu 2018
Hi Felix,
There are several approaches to working with multiple clocks in HDL Coder. What are the clock rates in your system? Or at least what are the relationships between rates 1, 2 and 3?
Kind regards, Garrey
Risposta accettata
Garrey Rice
il 25 Giu 2018
Hi Felix,
Thanks for the info. There are two ways to achieve this.
- Use a different rate in Simulink to represent each clock domain in your system, and set Clock inputs to Multiple under Model Configuration Parameters -> HDL Code Generation -> Global Settings. HDL Coder will provide a separate clock input for each rate. To generate HDL code the rates need to be related by integer factors, however you can connect up whatever you like when you instantiate the resulting HDL code. You can also use rates that are not related by integer factors for verification purposes in Simulink. See the attached example (multipleClocksX3.zip).
- There is also an option called “Use trigger signal as clock” under Model Configuration Parameters -> HDL Code Generation -> Global Settings -> Ports. This option allows you to explicitly represent clocks as signals in Simulink when using triggered subsystems.
Kind regards, Garrey
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!