rmods 0 5 сентября, 2016 Опубликовано 5 сентября, 2016 · Жалоба Ну и как Вам все объяснять? Ведь все эти ENB, LATCH, PLS не прокомментированы... Вот это зачем? else begin CNT_REG <= 24'd0; CNT_OUT <= 24'd0; И это не "айс": ... CNT_REG <= 24'd0; end else CNT_REG = CNT_REG + PLS; module fdb_cnt ( input CLK, input ENB, //разрешение работы счётчика input RST, input LATCH, //запись данных в выходной регистр и сброс счётчика input PLS, //вход импульсов output reg [23:0] CNT_OUT ); reg [23:0] CNT_REG; ... endmodule Это else CNT_REG = CNT_REG + PLS; считать опечаткой, заменить на else CNT_REG <= CNT_REG + PLS; else begin CNT_REG <= 24'd0; CNT_OUT <= 24'd0; Это брос регистров при снятом сигнале ENB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 5 сентября, 2016 Опубликовано 5 сентября, 2016 · Жалоба module fdb_cnt ( input CLK, input ENB, //разрешение работы счётчика input RST, input LATCH, //запись данных в выходной регистр и сброс счётчика input PLS, //вход импульсов output reg [23:0] CNT_OUT ); reg [23:0] CNT_REG; ... endmodule Это else CNT_REG = CNT_REG + PLS; считать опечаткой, заменить на else CNT_REG <= CNT_REG + PLS; else begin CNT_REG <= 24'd0; CNT_OUT <= 24'd0; Это брос регистров при снятом сигнале ENB Давайте применять общепринятые сокращения. Есть сигнал разрешения работы счетчика, например "ena" сигнал синхронного сброса - "sreset" Счетчик считает при if(ena) begin CNT_REG <= CNT_REG + 1'b1; ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 5 сентября, 2016 Опубликовано 5 сентября, 2016 · Жалоба module fdb_cnt ( input CLK, input ENB, //разрешение работы счётчика input RST, input LATCH, //запись данных в выходной регистр и сброс счётчика input PLS, //вход импульсов output reg [23:0] CNT_OUT ); reg [23:0] CNT_REG; ... endmodule Это else CNT_REG = CNT_REG + PLS; считать опечаткой, заменить на else CNT_REG <= CNT_REG + PLS; else begin CNT_REG <= 24'd0; CNT_OUT <= 24'd0; Это брос регистров при снятом сигнале ENB Давайте применять общепринятые сокращения. Есть сигнал разрешения работы счетчика, например "ena" сигнал синхронного сброса - "sreset" Счетчик считает при if(ena) begin CNT_REG <= CNT_REG + 1'b1; ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rmods 0 5 сентября, 2016 Опубликовано 5 сентября, 2016 · Жалоба Давайте применять общепринятые сокращения. Есть сигнал разрешения работы счетчика, например "ena" сигнал синхронного сброса - "sreset" Счетчик считает при if(ena) begin CNT_REG <= CNT_REG + 1'b1; ... Тут счётчик считает не тактовые импульсы, а импульсы со входа PLS, так-что доложно быть так: if(ena) begin if(PLS) CNT_REG <= CNT_REG + 1'b1; либо так: if(ena) begin CNT_REG <= CNT_REG + PLS; или ещё как. Вход LATCH то-же нужно учитывать, сигнал на него может прийти одновременно с сигналом PLS, и если это произошло, то записать в выходные регистры CNT_OUT <= CNT_REG + 1'b1; Очистка CNT_REG, по снятию сигнала разрешения работы, обязательна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 6 сентября, 2016 Опубликовано 6 сентября, 2016 · Жалоба Тут счётчик считает не тактовые импульсы, а импульсы со входа PLS, так-что доложно быть так: if(ena) begin if(PLS) CNT_REG <= CNT_REG + 1'b1; либо так: if(ena) begin CNT_REG <= CNT_REG + PLS; или ещё как. Вход LATCH то-же нужно учитывать, сигнал на него может прийти одновременно с сигналом PLS, и если это произошло, то записать в выходные регистры CNT_OUT <= CNT_REG + 1'b1; Очистка CNT_REG, по снятию сигнала разрешения работы, обязательна. Давайте еще раз... Я пытаюсь Вам объяснить, что не нужно плодить сущности... Иначе проект будет богат ошибками. Есть стандартный счетчик. У него есть параметр "разрядность", входы "сброс", "синхронный сброс", "разрешение счета"... Ну и возможно "направление счета"... Вот это все и ничего более быть не должно... Такой подход позволяет вставлять куски кода из заготовок одним кликом мыша... Либо в виде "модуля", либо в виде куска текста. Но в любом случае - без ошибок. Причем сразу с комментариями и с оформлением по всем правилам. Потому что наиболее часто встречающиеся куски кода я сразу же вставляю в "заготовки" в редакторе текста. Если в понятие "разрешение счета" входят несколько сигналов, то на входе "разрешение счета" должно быть "ena & PLS". Но никак не дополнительные строки текста if(ena) begin if(PLS) Тоже самое и для "Очистка CNT_REG, по снятию сигнала разрешения работы, обязательна".. Есть вход "синхронный сброс", надо просто приписать туда нужный сигнал... Был бы скайп, я бы показал на примерах. Так что ищите кафе или вокзал с бесплатным WiFi, если Вы не в СПБ.. Ну или познакомьтесь с девушкой у которой скайп есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rmods 0 6 сентября, 2016 Опубликовано 6 сентября, 2016 (изменено) · Жалоба module fdb_cnt ( input CLK, input ENB, input RST, input LATCH, input PLS, output reg [23:0] CNT_OUT ); reg [23:0] CNT_REG; reg CNT_CLR; always @ (posedge CLK) begin if(RST | CNT_CLR) CNT_REG <= 24'd0; else if(ENB && PLS) CNT_REG <= CNT_REG + 1'b1; end always @ (posedge CLK or posedge RST) begin if(RST) begin CNT_OUT <= 24'd0; CNT_CLR <= 1'b0; end else if(ENB && LATCH) begin CNT_OUT <= CNT_REG + PLS; CNT_CLR <= 1'b1; end else CNT_CLR <= ~ENB; end endmodule Ну а так? В симуляторе вроде работает, максимальная частота выросла на ~50МГц, и количество логических элементов уменьшилось на 20ть, до 52х. Изменено 6 сентября, 2016 пользователем Димон Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rmods 0 7 сентября, 2016 Опубликовано 7 сентября, 2016 · Жалоба module efdb_cnt ( input CLK, input ENB, input RST, input LATCH, input PLS, output reg [23:0] CNT_OUT ); reg [23:0] CNT_REG; always @ (posedge CLK or posedge RST) begin if(RST) CNT_REG <= 24'd0; else if(~ENB || LATCH) CNT_REG <= 24'd0; else CNT_REG <= CNT_REG + PLS; end always @ (posedge CLK or posedge RST) begin if(RST) CNT_OUT <= 24'd0; else if(ENB && LATCH) CNT_OUT <= CNT_REG + PLS; end endmodule Или так, даже поближе к пределу мечтаний будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться