Как установить системные часы на 200 МГц? - PullRequest
1 голос
/ 28 мая 2020

Я пытаюсь установить системные часы следующим образом:

`timescale 5 ns/1 ns

, а затем:

initial begin 
    forever #0.5 clk = ~clk;
end

Но я получаю сообщение об ошибке Unexpected char '5'? Зачем? В чем проблема с цифрой "5"? Например, сработало 10.

Другой способ, который сработал, но не изящный:

 `timescale 1 ns/1 ns

и

initial begin 
    forever #2.5 clk = ~clk;
end

Есть ли у кого-нибудь лучшее решение?

Ответы [ 2 ]

3 голосов
/ 28 мая 2020

Проблема с 5 ns в директиве `timescale заключается в том, что это недопустимый синтаксис в соответствии со стандартом IEEE Std. Разрешены только 1, 10 и 100.

Однако есть также проблема с вашим другим примером кода:

`timescale 1 ns/1 ns
forever #2.5 clk = ~clk;

Это не создает тактовую частоту 200 МГц. Тактовая частота составляет 166 МГц. Вы указали точность времени 1 нс, что означает, что дробные задержки будут округлены. В таком случае. 2,5 округляется до 3, что означает, что в итоге получается период 6 нс, а не 5 нс. Вы можете убедиться в этом, добавив следующий код в свой тестовый стенд:

initial $monitor($realtime, "\tclk=%b", clk);

Тогда вы увидите, что период clk равен 6 нс:

0   clk=0
3   clk=1
6   clk=0
9   clk=1
12  clk=0
15  clk=1

Один из способов достижения 200 МГц часы должны использовать точность 100ps:

`timescale 1 ns / 100 ps
forever #2.5 clk = ~clk;
3 голосов
/ 28 мая 2020

Из IEEE 1800-2017, раздел 22.7:

Аргумент time_unit определяет единицу измерения времени и задержек. Аргумент time_precision указывает, как округляются значения задержки перед использованием в симуляции. Аргумент time_precision должен быть не менее точным, чем аргумент time_unit; он не может указывать более длинную единицу времени, чем time_unit. Целые числа в этих аргументах определяют порядок величины значения; допустимые целые числа - 1, 10 и 100.

Я думаю, вы неправильно понимаете, для чего предназначена директива шкалы времени. Он предназначен для указания единицы времени и точности времени вашей симуляции, а не для указания вашего тактового периода.


Кстати: вы можете скачать IEEE 1800-2017 бесплатно от IEEE. (Accelera платит.) Я рекомендую вам это сделать. Это вполне читаемо.

...