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

 
 
> Тернарный оператор VS конструкция if-else, Какова логика языка? Почему одно не заменяет другое?
flammmable
сообщение Jun 7 2018, 06:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 4-06-18
Пользователь №: 104 848



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

Тогда код может быть следующий:
Код
wire clk_in;
wire clk_out;
reg state;

assign clk_out = clk_in | ~(state^IDLE);

Т.е. если state и IDLE совпадают бит-в-бит, то их побитовый XOR будет равен нулю. Инвертированный ноль - это единица. Единица или clk_in - единица. В противном случае, ноль или clk_in - это clk_in.
Всё абсолютно прозрачно синтезируется.

Или код может быть такой:
Код
wire clk_in;
wire clk_out;
reg state;

assign clk_out = clk_in | (state == IDLE);//На месте синтезатора я заменил бы данную конструкцию на предыдущую


Или такой:
Код
wire clk_in;
wire clk_out;
reg state;

assign clk_out =(state == IDLE) ? 1 : clk_in;


Но почему не прокатывает следующий вариант?
Код
wire clk_in;
wire clk_out;
reg state;

always @(state)
begin
if(state == IDLE) begin
  clk_out = 1;
end
else begin
  clk_out = clk_in;
end
end

В таком варианте Квартус ругается на то, что "10137: Object on left-hand side of assignment must have a variable data type".

Не, ну нельзя, так - нельзя. Но эмм... в списке чувствительности отсутствуют posedge/negedge. В любом случае, синтезатор будет разворачивать эту конструкцию в комбинационную логику (причем, скорее всего в такую, как в первом примере). Так чего же он лезет на рожон (регистр ему подавай)? Какова логика языка? Почему так писать некорректно?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Flip-fl0p
сообщение Jun 7 2018, 07:20
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(flammmable @ Jun 7 2018, 09:53) *

1. Я бы вообще никаких манипуляций с частотой не производил.
2. Если уж так нужно, обратите внимание на: altera clkctrl
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 7 2018, 08:14
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Flip-fl0p @ Jun 7 2018, 10:20) *
1. Я бы вообще никаких манипуляций с частотой не производил.
2. Если уж так нужно, обратите внимание на: altera clkctrl

Без обид.
Смотрите внимательно, то что я напишу.
Для одних - ПЛИС это кусок хлеба. И форум - это товарищи, которые помогают начать прилично зарабатывать. Поэтому их советы ценятся. Потому что на работе надо давать результат, иначе не будет зарплаты, причем результат нужен каждый день, а не когда-то потом. И я помню, что сам был в такой же ситуации. До этого я писал на VHDL, пришел на новую работу и там сказали - только Verilog. И я учился "в бою". И мне абсолютно некогда было "изобретать художества". Брал проверенные шаблоны и из них делал код, в том числе и по выходным, чтобы успеть.
А для других ПЛИС - это игра. Им результат как таковой не нужен. Они "проводят изыскания" в кусках кода, в "триггерах, нарисованных вьюерами" и т.д. Им советы, выдаваемые на форуме вроде как и нужны, но они все равно все сделают по-своему, "через Альпы".
Вот так и здесь. Есть основы:
клоки не изобретать и проект делать синхронным;
"внутри автоматов не плодить счетчики и не делать клоки.

И это написано практически во всех руководствах. Ну и что? Это же так интересно, написать что-то принципиально "свое", а потом задавать об этом вопросы на форуме. Чтобы все, кто готов помочь, бросились объяснять очевидные вещи.
Беда в том, что правильный ответ игруну вообще не нужен, потому что он быстро приводит к правильному результату. Тут как раз все надо делать все совершенно наоборот. Надо дать ссылку на кучу литературы, на методики, на головоломные статьи. Так чтобы до результата стало как можно дальше. Тогда игрун ощутит себя бесконечно крутым.
Вот как-то так....


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- flammmable   Тернарный оператор VS конструкция if-else   Jun 7 2018, 06:53
|- - flammmable   Цитата(Flip-fl0p @ Jun 7 2018, 10:20...   Jun 7 2018, 10:32
||- - iosifk   Цитата(flammmable @ Jun 7 2018, 13:32) Ко...   Jun 7 2018, 11:45
|||- - flammmable   Цитата(iosifk @ Jun 7 2018, 14:45) Для на...   Jun 7 2018, 12:26
||||- - iosifk   Цитата(flammmable @ Jun 7 2018, 15:26) Т....   Jun 7 2018, 12:30
||||- - flammmable   Цитата(iosifk @ Jun 7 2018, 15:30) Тогда ...   Jun 7 2018, 15:17
|||- - flammmable   Цитата(iosifk @ Jun 7 2018, 14:45) Если В...   Jun 13 2018, 08:31
|||- - iosifk   Цитата(flammmable @ Jun 13 2018, 11:31) к...   Jun 13 2018, 08:49
||- - RobFPGA   Приветсвую! Цитата(flammmable @ Jun 7 201...   Jun 7 2018, 12:16
||- - sazh   Цитата(flammmable @ Jun 7 2018, 13:32) 1....   Jun 7 2018, 19:20
|- - Viktuar   Цитата(iosifk @ Jun 7 2018, 09:14) Вот та...   Jun 7 2018, 17:27
|- - iosifk   Цитата(Viktuar @ Jun 7 2018, 20:27) Прост...   Jun 7 2018, 18:18
|- - RobFPGA   Приветствую! Цитата(iosifk @ Jun 7 2018,...   Jun 7 2018, 18:39
|- - Bad0512   Цитата(RobFPGA @ Jun 8 2018, 01:39) Приве...   Jun 8 2018, 02:18
||- - flammmable   Цитата(Bad0512 @ Jun 8 2018, 05:18) Думаю...   Jun 8 2018, 05:31
||- - Bad0512   Цитата(flammmable @ Jun 8 2018, 12:31) Бу...   Jun 8 2018, 06:58
|- - dima32rus   Цитата(RobFPGA @ Jun 7 2018, 21:39) Прост...   Jun 8 2018, 06:43
|- - RobFPGA   Приветствую! Цитата(dima32rus @ Jun 8 20...   Jun 8 2018, 08:35
- - RobFPGA   Приветсвую! Цитата(flammmable @ Jun 7 20...   Jun 7 2018, 08:05
- - andrew_b   Цитата(flammmable @ Jun 7 2018, 09:53) Пр...   Jun 7 2018, 08:22
- - Dantist2k17   ЦитатаНо почему не прокатывает следующий вариант? ...   Jun 7 2018, 11:30
- - lembrix   Цитата(flammmable @ Jun 7 2018, 13:32) Пр...   Jun 8 2018, 07:39
|- - Flip-fl0p   Цитата(lembrix @ Jun 8 2018, 10:39) Я бы...   Jun 8 2018, 07:43
- - dima32rus   Ну вот такой теоретический пример CODEmodule cnt_t...   Jun 8 2018, 10:20
|- - RobFPGA   Приветствую! Цитата(dima32rus @ Jun 8 201...   Jun 8 2018, 10:48
||- - dima32rus   Цитата(RobFPGA @ Jun 8 2018, 13:48) Вот о...   Jun 8 2018, 11:06
||- - Flip-fl0p   Цитата(dima32rus @ Jun 8 2018, 14:06) Сог...   Jun 8 2018, 11:26
|- - Flip-fl0p   Цитата(dima32rus @ Jun 8 2018, 13:20) Да...   Jun 8 2018, 10:50
|- - RobFPGA   Приветствую! Цитата(Flip-fl0p @ Jun...   Jun 8 2018, 11:30
|- - Flip-fl0p   Цитата(RobFPGA @ Jun 8 2018, 14:30) Экон...   Jun 8 2018, 11:39
|- - RobFPGA   Приветствую! Цитата(Flip-fl0p @ Jun ...   Jun 8 2018, 11:49
|- - Flip-fl0p   Цитата(RobFPGA @ Jun 8 2018, 14:49) .... ...   Jun 8 2018, 12:08
- - dima32rus   Переделал модуль. Теперь счетчик, вынесенный из ав...   Jun 8 2018, 12:19


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:27
Рейтинг@Mail.ru


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