Leo

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

145 posts in this topic

Leo    3

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

Share this post


Link to post
Share on other sites
Vascom    660

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

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

Share this post


Link to post
Share on other sites

DC/DC-преобразователи MORNSUN R3. Повышенная надёжность - сниженная стоимость!

Особенностью преобразователей R3 являются улучшенные технические характеристики, повышенная надёжность и сниженная стоимость. Электрическая прочность изоляции представленных преобразователей не менее 1500 В, а температурный диапазон применения -40…105ºС.

Подробнее...

Leo    3

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

Share this post


Link to post
Share on other sites

Новые методы уменьшения дрейфа нуля в малошумящих АЦП Texas Instruments

Стабилизация с помощью двойного прерывания с двойным контролем в новых АЦП ADS1235 производства Texas Instruments позволяет снизить до минимума напряжение смещения и достичь высокой точности в измерительных цепях современных прецизионных цифровых приборов.

Подробнее...

Leo    3

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

Share this post


Link to post
Share on other sites
Leo    3

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

Share this post


Link to post
Share on other sites
Leo    3

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

Share this post


Link to post
Share on other sites
Vascom    660

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

Share this post


Link to post
Share on other sites
Leo    3

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

Share this post


Link to post
Share on other sites
Vascom    660

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

Share this post


Link to post
Share on other sites
Leo    3

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

Share this post


Link to post
Share on other sites
Vascom    660

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

Share this post


Link to post
Share on other sites
Leo    3

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

Share this post


Link to post
Share on other sites
Vascom    660

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

Share this post


Link to post
Share on other sites
Leo    3

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

Share this post


Link to post
Share on other sites
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 выводятся не одновременно через несколько тактов сигнала С начинается разнобой подскажи в чем проблема.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

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


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

    • By admin
      Показано управление сдвиговым регистром 74HC164 в симуляторе Proteus. На основе этой схемы собраны бегущие огоньки из 16 светодиодов. 
      Бегущие огни.rar
    • By Дмитрий Т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; }
      Вот такая схема

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

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

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

    • @VanLux А я вижу вместо D1 перемычку. Как по измерениям, так и по фото.
    • Предохранители целы, а вот транзисторы... Щас снему радиатор, каждый проверю. Скорее всего пробит.  
    • У меня сложилось впечатление, что писал он это исключитально про нас.... 
    • На широкую полосу лучше на IRS2092
    • я не видел ни одного промышленного БП с самопитанием контроллера на прямом ходе. чтобы напряжение питания не плавало, с прямоходового выпрямителя делается стабилизатор на нужное напряжение. и следует учесть, что у обратнохода амплитуда на обмотке на прямом ходе примерно в 3 раза больше, чем на обратном ходе. и это оказывается хорошо, потому что стабилизатором можно не только погасить излишек напряжения, но и обеспечить работу в широком диапазоне напряжения питания самого обратнохода. и этот прямоходовый выпрямитель должен быть без дросселя, ты это сам знаешь, но я напоминаю.
    • По мне - так обычные транзисторы. Только мощность снимаемая с кристалла довольно приличная и пороговое напряжение низкое, среднее 3 вольта. Всякие регуляторы и шимы прямо с ноги контроллера. Ну или в линейных усилителях. Они стояли на преобразователях вроде как дающих из 24 вольта синус 220 вольт.
    • Я понял. Идиоты пишут статьи и вводят людей в заблуждение. Что за сволочи... Мне просто обидно, что я переделал трансформаторы по этой статье, а особого смысла в этом нет. Кому нужны верхние частоты... http://radiotehnikshem.narod.ru/Raznoe/Dorabotka_TB3-1-9.htm (Намотал 2-1-2-1-2-1-2(2)  каждая вторичка 65 витков 0,3мм, все параллельно, первички по 800 витков 0,12мм последовательно. Ну и добавил вторичку на 20 витков 0,5мм для 8 Ом. Первичка получилась 330 Ом, вторичку не мерял. Индуктивность тоже не измерял) А-то напугали меня, что я из этого стерео получу 1,5Вт максимум. Хотелось бы пару хотя-бы. И темброблок мне всё-таки нужен, т.к. я иногда и электрогитару могу подключить. У меня просто есть лампы 6н2п-ев и 6п14п-ев. Вот я с ними и морочусь... Есть ещё правда пара 6п36с новых. И ещё такой вопрос, как отразится на работе, если запараллелить входы для моно-сигнала?