Перейти к содержанию
    

McLarenfan

Участник
  • Постов

    6
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Здравствуйте! Необходимо написать на Верилоге умножитель целых знаковых\беззнаковых 32-битных чисел. Использую алгоритм Бута с анализом 3 бит множителя (4 бита множителя с перекрещиванием - (radix-8)). Таблица кодирования известна...диапазон значений множимого от -4 до +4, тут проблем не возникает. Подскажите как правильно построить лестницу частичных произведений, где каждое новое ЧП будет смещено на 3 разряда влево относительно предыдущего... Есть какой то алгоритм "расширения" разрядности частичных произведений (где слева от старших бит 32-битного текущего множимого вводится определенное число новых бит, значения которых зависят от знака операнда...), чтобы в конечном счете получился 64-битный результат... Основная проблема именно в незнании правильного формирования лестницы частичных произведений. Дальнейшие действия понятны - формируется через дерево Уоллеса (CSA) вектора суммы и переносов, которые затем складываются с помощью CLA-сумматора... Подскажите пожалуйста кто знает! Всем заранее благодарен!
  2. Хм, а можно поподробнее пожалуйста про SV и randcase? Или если можно ссылку дать на литературу где это описано, то что я читал по Верилогу, там такого не увидел... Просто есть ограничение, что работа ведется в Каденсе (NCVerilog) только... Я знаю например что и в Active HDL есть встроенная рандомная функция, но увы только Каденс... В самом Верилоге есть такая функция? Просто я работаю только в Каденсе (NCVerilog)... а там напримересть такая функция как $deposit, которой в самом Верилоге нет...Ввели ее только в Каденсе (для внесения ошибок при отладке..похожее на утверждения force-release). А можно поподробнее немного тогда об этой функции написать пожалуйста? Например если нужно зафорсить цепь используя иерархический доступ к ней в тестбенче... Я недавно начал изучать Верилог и многого не знаю, а литературы маловато по нему..ту, которую изучал эту функцию не нашел...
  3. Здравствуйте товарищи! Нужна помощь в следующем вопросе! Есть блочок АЛУ...я его отлаживаю Можно ли написать на Верилоге каким-либо образом механизм внесения ошибки в цепи ли реги схемы случайным образом? Т.е. в любую цепь или регистр из общего числа в схеме. Например нужно внести всего n-ошибок, по одной при выполнении каждой операции с помощью утверждения force. Просто как я понимаю в Верилоге нет функции рандома. Если как-нибудь можно это реализовать, буду премного благодарен Вашим идеям! Заранее спасибо!
  4. Всем привет! Занимаюсь отладкой АЛУ! Вношу изменения в сигналы цепей и регистров! Нигде не могу найти формат использования утверждения deposit...подскажите где можно почитать про него...также интересно чем оно отличается от force-release? Знаю только, что их нужно объявлять в тестовом модуле, чтобы не менять сам проект и обращаться к конкретному сигналу через иерархический путь к нему... Заранее спасибо!
  5. Нет, весь диапазон (нечетные тоже)! А неужели нельзя написать это на верилоге в поведенческом смысле, т.е. не на уровне логических вентилей, а только с помощтю логических операторов? Извиняюсь сразу, если глупость спрашиваю) Скважность должна быть постоянно равной 2! Благодаря нашему гуру-админу Максу удалось реализовать в коде Verilog делитель входной частоты с четными коэффициентами деления! Исходные данные: входы en - (разрешение на счет) если 1, то счет идет, если 0, то нет clk - входная частота n[3..0] - шина коэффициентов деления частоты reset - сброс (активный низкий уровень) выходы q[5..0] - выход самого счетчика clkout - выходная (поделенная) частота clkout=clk\n Вот код: module count (q, clkout, en, clk, reset, n); output q; reg [5:0] q; output clkout; input en, clk, reset; input [3:0] n; reg [3:0] K; reg clkout; always @ (posedge clk or negedge reset) begin if (!reset) begin q=6'b000000; end else if (en) q=q+1; end always @ (posedge clk or negedge reset) begin if (!reset) begin K = 0; clkout= 0; end else begin if (K==(n-1)) begin K = 1'b0; end else begin K = K + 1'b1; end end if (K>=(n>>1)) begin clkout = 1; end else begin clkout = 0; end end endmodule Когда значение n нечетное, то выходная частота clkout меньше на 1 импульс clk! Т.е. если n=7, то на выходе получается тоже самое, что и при n=8... Кто может помочь в исправлении этого, буду очень признателеен!) Еще раз спасибо Максиму!!!
  6. Здравствуйте товарищи! Изучаю Верилог только неделю, пока мало чего соображаю.... Подскажите, как мне сделать вот такой вот делитель частоты с постоянной скважностью! Буду очень признателеен! Заранее спасибо!
×
×
  • Создать...