Например TDA7294

Форум РадиоКот • Просмотр темы - quartus/verilog как так? что бы это значило?
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вс июл 21, 2019 05:16:29

Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Пн окт 01, 2018 17:09:06 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 08:33:45
Сообщений: 211
Рейтинг сообщения: 0
Доброго дня! Столкнулся с нежданчиком и ума не приложу что бы это значило )))
Имею рабочий проект, который жрет 23% логических элементов.
Меняю в секции initial значение для регистра ([7:0]) c 8'd128 на 8'd129. И...проект начинает жрать весь ресурс логических элементов оО
(105%. отключая отладочную шнягу 95%).
Попытка отказаться от этой секции и инициализировать по negedge nreset приводит к таким же результатом.
При этом в процессе функционирования этот регистр таки достигает этого значения (129 - терминальное состояние).
Моя в шоку Ж)
На всякий случай привожу кусок кода:
Кому интересно - предположения в студию ))

wire ADC_PacketReady;
reg APR; initial APR=0;
//wire APR = ADC_PacketReady;
reg oAPR; initial oAPR=0;
reg [7:0] bodcnt;
reg [7:0] phase;
reg [7:0] bytephase;
reg [7:0] adr ;
initial adr=128;
reg [7:0] ByteToSend;
/*
reg [15:0] tmp_res_cnt; initial tmp_res_cnt = 1000;
reg tmp_res;
always @(posedge CLK_50MHZ ) begin
if (tmp_res_cnt!=0) tmp_res_cnt<=tmp_res_cnt-1;
tmp_res <= (tmp_res_cnt!=0);
end
*/
always @(posedge CLK_50MHZ or negedge nReset)
if (!nReset ) begin
//adr<=8'd129;
end else
begin
APR <= ADC_PacketReady;// START_ADC_SEQUENCE;
oAPR <= APR;
if (APR & (~oAPR)) begin
adr <= 0;
bodcnt <= 24;
phase <= 0;
bytephase <= 0;
end else
if (adr != 8'd129) begin
if (bodcnt!=0) bodcnt<=bodcnt-1;
else begin
bodcnt <= 24;
if (phase!=10) begin // 0 01 02 03 04 05 06 07 08 09 10
phase<=phase+1; // 0 d7 d6 d5 d4 d3 d2 d1 d0 1 1
if (phase==0) begin
if (adr==8'd128) ByteToSend <= 8'hFF; else
case (bytephase)
0: ByteToSend <= ACC_Data1[07:00];
1: ByteToSend <= ACC_Data1[15:08];
2: ByteToSend <= ACC_Data1[23:16];
3: ByteToSend <= ACC_Data2[07:00];
4: ByteToSend <= ACC_Data2[15:08];
5: ByteToSend <= ACC_Data2[23:16];
endcase
end
end
else begin
phase <= 0;
if (bytephase!=5) bytephase <= bytephase+1;
else begin
bytephase <= 0;
adr <= adr+1;
end
end
end
end

if (adr != 8'd129) begin
if (phase>8'd8) TX<=1'b1; //stop bits
else if (phase==8'd0) TX<=1'b0; //start bit
else begin
TX<=ByteToSend[phase-1]; //phase=1..8; 8-phase = 0..7 lsb first
end
end else TX<=1'b1;
end

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Пн окт 08, 2018 13:43:55 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 14:03:46
Сообщений: 24
Рейтинг сообщения: 1
Здравствуйте!
Задайте значение адреса через "parameter", так будет правильно, проведите синтез, потом напишите результат.
И еще: советую всегда указывать размерность регистра или шины в битах.

P.S. Адрес = 128 будет выглядеть так:
parameter adr = 8'b100000000;


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Пн окт 08, 2018 20:21:17 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 08:33:45
Сообщений: 211
Рейтинг сообщения: 0
Ну, разрядность данных была в исходном коде. Тут как раз приведен эксперимент из разряда "танцы с бубном".
parameter не пробовал - завтра попробую!
синтез смотрел - да, там действительно поднаворатило)) но почему - хз.
Кстати - прописал модуль генерации ресета, что то типа:

cnt [15:0] rstcnt; initial rstcnt=16'd60000;
module myReset(
input clk,
output reg nreset
);
always @(posedge clk) begin
if (rstcnt!=0) rstcnt<=rstcnt-16'b1;
nreset <= (rstcnt==0);
end
и нисмотря на то, что его функционал дальше по схеме смехотворен, результат был тот же - проект раздулся в 4 раза
Такое ощущение, что превышается квота чего то и "компилятор" пугается и начинает гнать код по другим принципам

_________________
Шоб я польку танцевал..


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Пн окт 08, 2018 23:15:41 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 14:03:46
Сообщений: 24
Рейтинг сообщения: 0
Что это за сброс? Зачем он нужен? Почему именно так задается?
Диагноз: используйте FSM для возврата схемы в исходное состояние после выполнения всех преобразований над входным сигналом.


Вернуться наверх
 
Плавкие предохранители LittelFuse. Грамотный подбор

Выбор оптимального плавкого предохранителя требует учета многих параметров. Для упрощения выбора оптимального предохранителя и автоматизации расчетов Littelfuse предлагает онлайн-утилиту. Подробнее>>
Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Вт окт 09, 2018 09:20:44 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 08:33:45
Сообщений: 211
Рейтинг сообщения: 0
сброс был отладочный - внешний девайс подольше в ресете подержать.
на него и завязано то помимо прямого выхода пару линий в Z подержать.
функционально с первой причиной полностью развязанный.

Добавлено after 1 hour 3 minutes 42 seconds:
parameter помог.

parameter adrmax=8'd129;
....
if (!nreset) adr<=maxadr;
....
ну и дальше по тексту.

Осталось понять - почему? По логике вещей это одно и тоже в данном контексте.
Я понимаю, когда параметр конфигурирует модуль, например input[parameter1:0], но тут же он выступает в качестве обычной константы

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Немногим дороже дискретного решения: новое поколение импульсных стабилизаторов Mornsun

Практически во всех радиоэлектронных устройствах массово применяются линейные понижающие стабилизаторы напряжения типа КРЕН в корпусе TO220 (другое обозначение – 78хх) и им подобные для формирования основного напряжения питания схемы.
Данные стабилизаторы позволяют без особых затрат получить нужное для каскада или узла схемы напряжение, если устройство питается от внешнего источника с более высоким напряжением. Для этого требуются… Подробнее>>
Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Вт окт 09, 2018 10:45:46 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 14:03:46
Сообщений: 24
Рейтинг сообщения: 0
Я Вам уже говорил - изучайте цифровую схемотехнику. В соседней теме Вы выступили в роли эксперта, отметая на своем пути очевидные вещи.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Ср окт 10, 2018 19:44:27 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 08:33:45
Сообщений: 211
Рейтинг сообщения: 0
очевидная вещь, которую Вы оспариваете это то, что
assign c = a & b генерит
....._____
а--|....& |
....|.......|--c
b--|.......|
....|____|

и без зазрения совести заменяете ее на
always @(posedge c) Q<=D;
....._____
D--|.......|
.....|.......|__Q
C--/.......|
.....|____|


А это трабла конкретно ЭТОГО компилятора. На другой версии Квартуса все собралось как надо.

_________________
Шоб я польку танцевал..


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: quartus/verilog как так? что бы это значило?
СообщениеДобавлено: Чт окт 11, 2018 07:21:03 
Первый раз сказал Мяу!

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб окт 01, 2016 14:03:46
Сообщений: 24
Рейтинг сообщения: 0
Я этого не оспариваю. Последняя Ваша запись абсолютно корректна.
Речь идет о том, что если переписывать данные из регистра в шину, то это делается простым присваиванием.
Если переписывать данные в регистр из шины, то это, как правило, делается через D триггер. Однако, Вы употребили термин "защелкивается", что в данном случае явлчется абсолютно неверным термином, именно поэтому я Вас спросил о разнице между FlipFlop и Latch.


Вернуться наверх
 
Prist.ru предлагает скидку всем частным лицам при покупке приборов АКИП, GW Instek, APPA (кроме осциллографов АКИП-4115/1А, GDS-71102)!

Интересные новинки уже на складе:

Осциллограф АКИП-4126Е

Многоканальные источники питания серии GPP

Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y