Отговори на тема  [ 21 мнения ]  Отиди на страница 1, 2  Следваща
Проблем с натрупващ суматор 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Сеп 23, 2007 7:30 pm
Мнения: 118
Мнение Проблем с натрупващ суматор
Налага ми се да проектирам на Verilog (HDL език) натрупващ суматор. Обаче нещо симулацията не е това което трябва да е. Т.е не сумира така както искам аз. Може ли едно рамо? Прилагам и кода.


Прикачени файлове:
sumator.rar [517 Байта]
176 пъти
Пон Сеп 24, 2007 9:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
ти под натрупващ суматор разбираш блок суматор + блок акумулатор ли :?: обединени с обща входноизходна шина данни и управляващи сигнали :?:

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Сеп 25, 2007 11:57 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
пусни малко инфо за идеята ти....
какво ти е заданието :?:
щото сорса ти е малко ... забърбалучкан ;)

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Сеп 25, 2007 12:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
знaчи квото съм разбрал от сорса ти ,требе да е нещо такова, само че съм го драснал на VHDL щото ми е по лесно ;)
и симулатора симулира и битовете циркулират :)
първият принт от моделсима е с константна величина на входа, вторият е с две значения на входа (променя на по някое време :) след старта ) за по-добра визия :)
а пък твоят проблем :
"Обаче нещо симулацията не е това което трябва да е. Т.е не сумира така както искам аз. "
го има навсякъде -> програмата прави това дето си написал, а не това дето ти се иска да стане

:wink:

ако не е така кажи как ти иска да сумира :?: може да го удурдисаме


Прикачени файлове:
ModelSim_ ()1.pdf [11.35 KiB]
195 пъти
ModelSim_ ().pdf [13.27 KiB]
182 пъти
sum.vhd.pdf [14.4 KiB]
176 пъти

_________________
... ако трети ден не ти се работи... това означава, че е сряда !
Вто Сеп 25, 2007 1:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение 
Ако съм разбрал правилно човека иска да направи сумиране с натрупване, т.е. ако Yn e 0xff като добави 1 да остане пак същото а не 0.


Вто Сеп 25, 2007 2:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
syscop написа:
Ако съм разбрал правилно човека иска да направи сумиране с натрупване, т.е. ако Yn e 0xff като добави 1 да остане пак същото а не 0.

айде да ми обясните "сумиране с натрупване" явно не вдявам... ама нали е Академия
единственото за което се сещам е интегриране :!:
и какво е поведението на една такава система?
иде реч това Yn когато достигне 0xff после?

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Сеп 25, 2007 3:09 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение 
После остава същото, докато не се нулира. Използва се при обработка на цветове например. Не е много приятно ако цвета от чер стане бял или обратно. Дали точно това е идеята колегата трябва да каже.


Вто Сеп 25, 2007 3:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4906
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение 
syscop написа:
После остава същото, докато не се нулира. Използва се при обработка на цветове например. Не е много приятно ако цвета от чер стане бял или обратно. Дали точно това е идеята колегата трябва да каже.

е то и при радарите има тъквиз рабути ;)
а що не си го е написал като условие....
мдаа то отдавна се говори, че требе да има ред при въпросването из форума... щото иначе абе тука проблемче, сорсче, ама веднага, ама туймитионуймити...
нема значение като гледам на колегата му е през "спицата" вече проблема

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Сеп 25, 2007 4:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
на английски термина е "saturation". в почти всички dsp-та може да се контролира при събиране и натрупване, дали да има или да я няма.


Вто Сеп 25, 2007 8:47 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Сеп 23, 2007 7:30 pm
Мнения: 118
Мнение идеята е следната:
На входа на суматора има поток данни, на всеки такт искам да се сумира текущите битове с резултата от предното сумиране. Резултата се записва в регистър и при следващия такт нови данни+резултата от рег-а.

А после взимам старшите 6 бита.
Цялата задача е deframer. В случая изчисление на crc.

пс. не съм колега, а колежка. и определено ми е през...


Сря Сеп 26, 2007 7:57 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Код:
module add_acc #(
  parameter
    WI = 32,
    WO = 32
) (
  input clk,
  input reset,
  input [WI-1:0] in,
  output reg [WO-1:0] out
);

  always @(posedge clk)
    if (reset)
      out <= 0;
    else
      out <= out + in;

endmodule


Тестов модул:

Код:
module test;

  localparam
    WI = 8,
    WO = 8;

  reg clk;
  reg reset;

  reg [WI-1:0] data;
  wire [WO-1:0] acc;

  add_acc #(
    .WI (WI),
    .WO (WO)
  ) addacc0 (
    .clk (clk),
    .reset (reset),
    .in (data),
    .out (acc)
  );

  initial
    forever
      #5 clk <= ~clk;

  initial
    begin
      $monitor ("time: %6g   reset=%b data=%d acc=%d", $time, reset, data, acc);
      clk = 0;
      reset = 0;
      #10 reset = 1;

      #10 reset = 0;
      data = 128;
      #10 data = 64;
      #10 data = 32;
      #10 data = 16;
      #10 data = 8;
      #10 data = 4;
      #10 data = 2;
      #10 data = 1;
      #10 $finish;
    end

endmodule



P.S. жената-инженерка == морско свинче


Сря Сеп 26, 2007 11:57 am
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Сеп 23, 2007 7:30 pm
Мнения: 118
Мнение не знам за...
не знам за морското свинче, но WI = 32, не ми е ясно...
гледах, мяса на Verilog, но такъв запис на присвояване не бях виждала... ( доколкото знам се указва броят битове, вида на записа - двоичен, десетичен и т.н. и накрая ст-ста в указаната вече бройна с-ма)
Разясни малко моля!!!
и къде дефинираш параметри в модула (там все си мисля бе мястото за входове и изходи, упоменаването им).

_________________
Айде сега и на инженери ли ще се правим? ;)


Сря Сеп 26, 2007 1:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Verilog-2001 е, само че за твое удобство беше с параметри да си го ползваш както прецениш. Но .... ето ти по-проста версия без параметри, фиксирана на 32-битов вход и 32-битов акумулатор:

Код:
module add_acc (
  input clk,
  input reset,
  input [31:0] in,
  output reg [31:0] out
);

  always @(posedge clk)
    if (reset)
      out <= 0;
    else
      out <= out + in;

endmodule


Ако загледаш тестовия модул ще си отговориш на повечето въпроси - как се ползва модулът, как му се прикачат сигнали и как му се предават параметри така че да не са "default" стойностите.

От любопитство, това домашно някакво в университет ли е?

EDIT: Като елементарна задачка, опитай се да му добавиш "enable" вход, за да не натрупва на всеки тактов импулс.


Сря Сеп 26, 2007 1:42 pm
Профил
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
module add_acc (
input clk,
input reset,
input enable,
input [31:0] in,
output reg [31:0] out
);

always @(posedge clk)
if (reset) out <= 0;
else
if (enable) out <= out + in;

endmodule


така става ли :) за пръв път пипам такова нещо


Сря Сеп 26, 2007 2:26 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
Мда, това е решението което ще се синтезира правилно.


Сря Сеп 26, 2007 2:32 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 21 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 0 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни