Leo

Не Работает Сдвиговый Регистр В Верилог

145 сообщений в этой теме

Leo    3

Достойно.Но я не понел пока что ты сделал. А значения так и не распределились как надо.

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


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

я добавил сигнал rstn.

Как же не распределились? Всё как надо, по порядку идёт.

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


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

Да но регистры заполняются не по сигналу С а на 230 ns разом первый становится третьим а четвертый заполняется на 470 так что результат не совсем правельный.

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


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

Найдите миллионы труднодоступных

электронных компонентов

Vascom    647

Я тебя не понимаю. Какие С, откуда 230, 470?

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


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

Запускаю в программе GTKWave и результат выводится перевернутый на 230ns для трех регистров 1-3 а для четвертого потом а код был написан вывод по сигналу "c" 12 значений 3 значения четыре раза. У тебя что подругому?

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


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

Добавь ресет во все регистры.

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


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

Добавил в тест бэнч перед данными не помогло картина меняется не существенно или подругому надо сделать а чем грозят задержки #? в коде тест бэнч.

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


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

Хочу развести плату для Альтеры но почитав монуал чесно говоря не очень понял у микросхемы должно быть питание. Входов там несколько питание ядра вроде не одно и также для генератора. Питание портов ввода-вывода выводы под JTAG или есть ещё что то где это лучше посмотреть вроде в квартус есть картинка портов а то после монуала каша пока.Если есть опыт подскажи.

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


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

Читай даташит. Хотя я сомневаюсь, что осилишь разводку для Альтеры.

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


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

Звучит как приговор.Может основные моменты можно осветить и остольное стало бы понятнее.Или ты этим не заморачивался.

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


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

Этим ни кто не заморачивался. Купи макетную плату с распаяной альтерой.

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


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

Это ты видно просто не вкурсах.Жаль.Хотя может ты и прав.Но если чего узнаешь напиши.

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


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

Ну если ты сможешь несколько сотен шариков развести и многослойную плату сделать. То конечно.

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


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

Ты про BGA я про ту которая с ножками.

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


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

Ну и указал бы её модель, корпус. Или ты думаешь я твои мысли читаю?

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


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

Модель ALTERA ep3c25e144c8n tqfp144 или она тоже проблемная.

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


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

Нашёл распиновку ep3c25e144 но пока не очень разобрался.

EP3C25.pdf

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


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

Появились в коде не понятные задержки что то не понятно почему.

`timescale 1ns/1ns
module counter_uut(
   shift,
   clk,
   sr_in,
   rstn,
   sr_out1,
   sr_out2,
   sr_out3
);
input rstn;
input wire [7:0]sr_in;
input shift,clk;
output  [7:0]sr_out1,sr_out2,sr_out3;
reg[23:0]a;
reg[7:0]b1,b2,b3;
reg[7:0]s1,s2,s3,v1,v2,v3;
reg [1:0]counte=2'b0;
wire c;
always @(posedge clk or negedge rstn)
begin
if(!rstn) a <= 24'b0;
else a <= { a[15:0],sr_in };
end
always @(posedge clk)
begin
if(counte==2'd2)    counte <= 2'b0;
   else			    counte <= counte + 1'd1;
end
assign c= counte==2'd2;
always @(posedge clk)
if(c==1)
begin
  s1<=a[23:16];
  s2<=a[15:8];
  s3<=a[7:0];
if(s1>b1)
 v1<=s1-b1; 
 else
 v1<=b1-s1;
if(s2>b2)
 v2<=s2-b2;
 else
 v2<=b2-s2;
if(s3>b3)
 v3<=s3-b3;
 else
 v3<=b3-s3;

  end
endmodule

Тест бэнч

`timescale 1ns/1ns
module test();
reg rstn;
reg clk;
reg [7:0] sr_in;
initial
begin
   clk = 0;
   sr_in = 0;
   rstn = 0;
end

always
 #10 clk= ~clk;

wire[7:0]sr_out1,sr_out2,sr_out3;

counter_uut counter(
   .clk(clk),
   .rstn(rstn),
   .sr_in(sr_in),
   .sr_out1(sr_out1)
);


initial
begin
$dumpfile("out.vcd");
$dumpvars(-1, test);
$monitor($stime,, clk,,, sr_in,, sr_out1);
@(negedge clk);
rstn = 1;
@(posedge clk);
sr_in = 120;
@(posedge clk);
sr_in = 230;
@(posedge clk);
sr_in = 255;

@(posedge clk);
sr_in = 130;
@(posedge clk);
sr_in = 225;
@(posedge clk);
sr_in = 250;

@(posedge clk);
sr_in = 120;
@(posedge clk);
sr_in = 220;
@(posedge clk);
sr_in = 245;

@(posedge clk);
sr_in = 100;
@(posedge clk);
sr_in = 230;
@(posedge clk);
sr_in = 255;
@(posedge clk);
sr_in = 90;
@(posedge clk);
sr_in = 240;
@(posedge clk);
sr_in = 250;

@(posedge clk);
sr_in = 110;
@(posedge clk);
sr_in = 250;
@(posedge clk);
sr_in = 240;
#430$finish();
end
endmodule

Значения v1,v2,v3 выводятся не одновременно через несколько тактов сигнала С начинается разнобой подскажи в чем проблема.

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


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

Переделал вот так вроде заработало не знаю так правельно

always @(c)
begin
if(c==1)
begin
  s1<=a[23:16];
  s2<=a[15:8];
  s3<=a[7:0];
end
begin
if(s1<b1)
v1<=b1-s1; 
 else
v1<=s1-b1;
if(s2<b2)
 v2<=b2-s2;
 else
 v2<=s2-b2;
if(s3<b3)
 v3<=b3-s3;
 else v3<=s3-b3;
 b1<=s1;
 b2<=s2; 
 b3<=s3;
  end
end

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Scinar
      Привет всем. Хочу собрать калькулятор на atmega 328p. Но не как не могу запустить LCD TIC55, основанный на сдвиговом регистре с чипом ML1001. Никогда не связывался с подобным дисплеем. Понравился очень экономичным потреблением тока и экономным количеством выводов управления - всего 3. Проблема в тактирование, как написать программу для вывода хотя б одного символа, документации мало нашел, так же есть библиотека для atmel studio 5, сам пользуюсь 7. Библиотку переделал под 7 но дисплей так ничего и не вывел. Подскажите как правильно написать программу, язык значения не имеет хоть assembler или С. Мне надо что б дисплей вывел хоть один символ корректно, дальше разберусь


      TIC55 Display Module.pdf
    • Автор: Корлет
      Надо составить схему регистра на триггерах, выполняющую сложение по модулю два. Складывается два двоичных числа: то, которое хранится на триггере, и то, которое подаётся на вход. С конъюнкцией получилось легко, а вот xor никак не могу придумать. Если кто знает, дайте, пожалуйста, схему или хотя бы расскажите на словах, что где.

    • Автор: admin
      Показано управление сдвиговым регистром 74HC164 в симуляторе Proteus. На основе этой схемы собраны бегущие огоньки из 16 светодиодов. 
      Бегущие огни.rar
    • Автор: Дмитрий Т87
      Здравствуйте. Прошу помощи в теме статитическая индикация 6 разрядного 7ми сегментного индикатора по 2м проводам Data и Clock.
      Есть такой код для 3х разрядного индикатора в CVavr Си
      Хочу закидывать данные в каждый разряд отдельно, и выводить эти функции в прерываниях avr микроконтроллера.

      // cd4094 control example by kalobyte.com 2009 #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> #define REG_PORT PORTB #define REG_DDR DDRB #define REG_PIN_DATA 3 #define REG_PIN_CLK 4 //--- #define REG_DATA_ON REG_PORT|=1<<REG_PIN_DATA; #define REG_DATA_OFF REG_PORT&=~(1<<REG_PIN_DATA); #define REG_CLK {REG_PORT|=1<<REG_PIN_CLK;REG_PORT&=~(1<<REG_PIN_CLK);} unsigned char digs[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // katode // unsigned char digs[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //anode void cd4094_init(void){ char i=0; while(i!=24){ REG_CLK i++; } } void cd4094(int dig){ char i,tmp,j; //dig = 123; int div[4]; div[1] = digs[dig%10]; dig = dig/10; div[2] = digs[dig%10]; div[3] = digs[dig/10]; for(j=3;j>0;j--){ tmp = div[j]; for(i=8;i>0;i--){ if(tmp & 0x80){ REG_DATA_ON } else {REG_DATA_OFF} tmp <<=1; REG_CLK } } } int main(void){ int i=1; REG_DDR = (1<<REG_PIN_DATA)|(1<<REG_PIN_CLK); REG_PORT = (0<<REG_PIN_DATA)|(0<<REG_PIN_CLK); cd4094_init(); //cd4094(2); while(i<999){ _delay_ms(1000); cd4094(i); i++; } return 0; }
      Вот такая схема

    • Автор: peanutwolf
      Добрый день!
      Прошу помощи.
      Имеется клемма, на вход которой поочередно необходимо подавать 12В. Подскажите, как это сделать с использованием сдвигового регистра.
      Пробовал делать через транзисторный ключ, но у меня его ни как не получается запереть при подаче 5 вольт на базу.
      Здесь я подаю 0 на базу, на коллекторе 12В:

      Здесь я подаю 1 на базу, напряжение на коллекторе так же 12В:

      Буду так же очень благодарен, если кто нибудь подскажет вариант решения без использования транзистора.
  • Сообщения

    • Даже эта развязка уже излишняя. Можно управлять симистором напрямую. Я в своей схеме использовал обычный чип от домашней елки, только вместо гирлянды тупо подключал УЭ Ваших симисторов. Работало много лет на центральной елке района. Даже фазовое управления яркостью (плавное затухание и загорание) работало прекрасно. Смотрелось очень грандиозно.  Единственное на нулевой провод нужно обратить особое внимание по сечению и надежности. Кадровые электрики обычно к нулю относятся пренебрежительно. Особенно это было важно в предыдущих моих проектах, когда не было симисторов и использовал тиристоры на 160 А и по два диода на него с разных фаз. В этом проекте, кстати, была матрица восемь пар гирлянд по 4 канала каждая. Может "работа" и "стендбай"? 
    • @Andrey 69  Да ни каких обид,что вы... Я и отметил что, ...играет довольно приятно.... а не восторженные ох и ах(свойственные школоте и "меломанам" с оттоптанными ушами) -------------------- Понятно что не топ,но в то время(начало 80хх) сравнивал(у друзей\знакомых) с разными Акаями\Дживисюками\ещё чего то,что было доступно- обыгрывал он большенство их(а Акаев так вообще всех ).А так да...внутри пустенький и радиатор скромный-глупо сравнивать его с топами тех времён,а как условный середнячёк он довольно не плох(в этой же "голубой серии" были и покруче аппараты). В то время(прим. середина 80хх) довелось услышать Кенвуд древний какой то(страшненький на вид по дизайну) ,вот тот уделал всё что я слышал - помню как был шокирован мягким и глубоким звуком и до сих пор не слышал какого уся даже близко по звуку.Современное: да- играет\да- вроде и низа хорошие\да- и сцена есть\... а вот какой то души - нет Удержало тогда от покупки- его не красявошный дизайн для того  времени,сейчас понимаю глупость конечно-не в красоте приоритет у воспроизводящей техники,а в звуке.Но в те времена Акай захватил массы с своим "космическим" дизайном( и паршивым звуком) -за ними потянулись другие производители(а кто не мог разработать\построить что то приличное стали насыпать горстями светики на морду для эффекту),у народа от подобного разгорались глаза\захватывало дух\сам собою раскрывался кошелёк(мол буржуазное плохо играть не может) и.... начался век маркетинга.
    • Вместо механических реле были и электронные с тем же разьемом.
    • https://ru.aliexpress.com/item/New-DIY-Kit-Electric-LM317-Adjustable-Voltage-Regulator-Step-Down-Power-Supply-Module-With-LED-Meter/32829548755.html?spm=a2g0v.search0604.3.292.680b1684cRe387&ws_ab_test=searchweb0_0,searchweb201602_4_10065_10068_10546_10059_10884_10548_10887_10696_100031_10084_10083_10103_5723515_10618_10307_449,searchweb201603_2,ppcSwitch_3&algo_expid=e780d2c5-3356-496a-8fa8-c044dba9b036-45&algo_pvid=e780d2c5-3356-496a-8fa8-c044dba9b036&transAbTest=ae803_2&priceBeautifyAB=0   292,88 р.
    • В эту тему размещаем информацию об обнаруженных  компонентах с аномально низкой ценой.
      Купили вы их, или нет, значения не имеет. LM358 по 60 копеек
    • Да можно, но в параллель к С34 надо керамику повесить на 0,1мкФ
    • Для особо ленивых, не желающих ни трудиться, ни мучиться, но имеющих 100 рублей, можно предложить  облегчённый и менее мощный вариант готовых игольчатых щупов.