реклама на сайте
подробности

 
 
> Проблема: multiple driver
Veg@
сообщение Jul 27 2010, 11:05
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416



Возможно глупый вопрос: в Verilog-коде при создании нескольких блоков always нельзя присваивать значения регистру более чем в одном блоке. Например:
Код
reg a;

always @(posedge clk1)
  a = 1;
always @(posedge clk2)
  a = 2;

Можно ли выполнить эту задачу каким-либо другим образом?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Veg@
сообщение Jul 30 2010, 11:30
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 16-09-09
Пользователь №: 52 416



1. Имеет ли место применение для синхронизации блоков более упрощенного способа: с помощью оператора wait, подобно приведенному примеру для симуляции в одной из книг?:
Прикрепленное изображение
(Поляков А.К. Языки VHDL и Verilog)
2. При одинаковых clock'ах также возникает проблема. Пример:
Код
module test (clk,rst,out1);
  input            clk;
  input            rst;
  output reg    out1;  
  reg                    a,out2;
    
    always @(posedge clk or posedge rst)      
        if (rst) a = 0;
        else if (a) out1 = 1;

  always @(posedge clk or posedge rst)
        if (rst) a = 0;
endmodule

В случае присваивания в строке 9 переменной out1 возникают ошибки компиляции:
Код
Error (10028): Can't resolve multiple constant drivers for net "a" at test.v(12)
Error (10029): Constant driver at test.v(9)
Если же присваивать значение, например, out2, то компиляция проходит успешно. С чем это связано?

Сообщение отредактировал Veg@ - Jul 30 2010, 11:31
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016