Перейти к содержанию
    

Quartus II, моделирование, Verilog

Здравствуйте. Описание на верилоге содержит регистр data_1:

//    Ожидание разрешения чтения o_nRFS и прием последовательного кода iSDATA
wire    i_SDATA;
assign    i_SDATA    = GPIO_0[6];
reg        [15:0] data_1;
//    ***
always @(negedge o_sclk or negedge KEY[0])
begin
    if (!KEY[0])
    data_1 <= 0;
    else
    begin
        if (!o_nRFS)
        begin
            data_1[0] <= i_SDATA;
            data_1[15:1] <= data_1[14:0];
        end
    end
end

После компиляции проекта данный регистр есть в окне Node Finder, я вставляю его в редактор временных диграмм, но после моделирования регистр не отображается.

В сообщениях нахожу строчки для каждого разряда регистра:

Warning: Ignored node in vector source file. Can't find corresponding node name "data_1[15]" in design.

Как сделать, чтобы регистр учавствовал в процессе моделирования?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

синтезатор выкинул? сделайте так:

(* noprune *)reg        [15:0] data_1;

а вообще такие вещи моделируются в моделсиме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы задумался над корректностью такого описания RTL. Если даже ModelSim выкидывает его, то вопрос что с ним сделает Quartus или аналогичный о Xilinx (вроде ISE - не знаю так как не пользую). Просто есть строгое описание регистра (тригера), которого стоит придерживаться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Моделсим не выкидывает, там все нормально и все видно. Поставил (* noprune *) рядом с тремя регистрами, которые не отображались - появился лишь один из регистров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Моделсим не выкидывает, там все нормально и все видно. Поставил (* noprune *) рядом с тремя регистрами, которые не отображались - появился лишь один из регистров.

 

А этот регистр data_1[15] затем в проекте как-то используется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Регистр data_1 далее связан еще с цепочкой других внутренних регистров. Пока они внутренние, отображения нет, как только вся цепочка связывается с каким-либо контактом ввода/вывода - внутренние регистры появляются в окне симулятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Регистр data_1 далее связан еще с цепочкой других внутренних регистров. Пока они внутренние, отображения нет, как только вся цепочка связывается с каким-либо контактом ввода/вывода - внутренние регистры появляются в окне симулятора.

 

Ну так выведите на свободный контакт и отлаживайтесь, в чем проблемы-то?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь уже и не знаю, чего я так всполошился. Видимо, всего лишь хотел узнать, как это дело решается. Может, какие еще варианты, помимо (* noprune *), есть, или хотя бы услышать, что внутренние регистры действительно не отображаются, пока не вывести на свободный пин, и ничего с этим не поделаешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, какие еще варианты, помимо (* noprune *), есть, или хотя бы услышать, что внутренние регистры действительно не отображаются, пока не вывести на свободный пин, и ничего с этим не поделаешь.

 

С проектом у Вас проблемы. Конечно, квартус минимизирует логику, но чтобы регистры - это очень надо постараться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С проектом у Вас проблемы

Можно узнать, в чем именно проблемы?

Например, в описании счетчика:

reg [3:0] count_5;
//    ***
always @(posedge CLOCK_24[0] or negedge KEY[0])
begin
    if (!KEY[0])
    count_5 <= 0;
    else
    begin
        if (!o_nRFS)
        count_5 <= count_5 + 1;
        if (count_5 == 4'b1011)
        count_5 <= 0;
    end
end

если я поставлю директиву (* noprune *) перед count_5, он исправно участвует в отладке. А в описании, которое я уже приводил:

//    Ожидание разрешения чтения o_nRFS и прием последовательного кода iSDATA
wire            i_SDATA;
assign            i_SDATA    =    GPIO_0[6];
(* noprune *) reg        [15:0]    data_1;
//    ***
always @(negedge o_sclk or negedge KEY[0])
begin
    if (!KEY[0])
    data_1 <= 0;
    else
    begin
        if (!o_nRFS)
        begin
            data_1[0] <= i_SDATA;
            data_1[15:1] <= data_1[14:0];
        end
    end
end

(* noprune *) перед data_1 не позволяет увидеть его в окне при моделировании.

А есть вот такой кусочек описания:

//    Запись полученного кода в регистр data_2, когда чтение запрещено
(* noprune *) reg        [15:0]    data_2;
always @(posedge CLOCK_24[0] or negedge KEY[0])
begin
    if (!KEY[0])
    data_2 <= 0;
    else
    if (o_nRFS == 1'b1) data_2 <= data_1;
end

в котором я переписываю информацию из одного регистра в другой (не знаю, что здесь является проблемой проекта), и в котором при записи (* noprune *) перед data_2 позволяет увидеть в отладчике только первые 15 бит 16-и разрядного регистра. Почему 16-й разряд не виден?

Смысл директивы (* noprun *), насколько я понял, в том, чтобы выход регистра не висел в воздухе, а был связан с этим же регистром - заводился бы на вход регистра, грубо говоря. Быть может, через мультиплексор. Тогда все регистры для этой директивы одинаковы, а на деле выходит не так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно узнать, в чем именно проблемы?

Почему 16-й разряд не виден?

Может быть, все-таки 16-й разряд никакого влияния не оказывает на работу схемы? Задача ПЛИС - что-то принять по входам, обработать, и что-то выдать наружу. Если на прием входных сигналов или выдачу выходных этот разряд не влияет, то он будет выброшен синтезатором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...