Azotirovanie.ru

Инженерные системы и решения
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Двоично-десятичный код

Двоично-десятичный код

Двоично-десятичный код (англ.  binary-coded decimal ), BCD, 8421-BCD  — форма записи рациональных чисел, когда каждый десятичный разряд числа записывается в виде его четырёхбитного двоичного кода. Таким образом, каждая тетрада двоично-десятичного числа может принимать значения от 00002 (010) до 10012 (910).

Например, десятичное число 31110 будет записано в двоичной системе счисления в двоичном коде как 1 0011 01112, а в двоично-десятичном коде как 0011 0001 0001BCD.

Описание [ править | править код ]

При помощи 4 бит можно закодировать 16 цифр. Из них используются 10. Остальные 6 комбинаций в двоично-десятичном коде являются запрещёнными. Таблица соответствия двоично-десятичного кода и десятичных цифр:

Разрешённые комбинации

Двоично-десятичный кодДесятичный код
11
12
113
14
115
116
1117
18
119

Двоично-десятичный код также применяется в телефонной связи. В этом случае кроме десятичных цифр кодируются символы ‘*’, ‘#’ и некоторые другие. Для записи этих символов в двоично-десятичном коде используются запрещенные комбинации:

Запрещённые дополнительные комбинации

Двоично-десятичный кодДесятичный код
11* (звёздочка)
111# (решётка)
11+ (плюс)
111— (минус)
111, (десятичная запятая)
1111Символ гашения

Преимущества и недостатки [ править | править код ]

Преимущества [ править | править код ]

  • Упрощён вывод чисел на индикацию — вместо последовательного деления на 10 требуется просто вывести на индикацию каждый полубайт. Аналогично, проще ввод данных с цифровой клавиатуры.
  • Для дробных чисел (как с фиксированной, так и с плавающей запятой) при переводе в человекочитаемый десятичный формат и наоборот не теряется точность.
  • Упрощены умножение и деление на 10, а также округление.

По этим причинам двоично-десятичный формат применяется в калькуляторах — калькулятор в простейших арифметических операциях должен выводить в точности такой же результат, какой подсчитает человек на бумаге.

Недостатки [ править | править код ]

  • Требует больше памяти.
  • Усложнены арифметические операции. Так как в 8421-BCD используются только 10 возможных комбинаций 4-битового поля вместо 16, существуют запрещённые комбинации битов: 1010(1010), 1011(1110), 1100(1210), 1101(1310), 1110(1410) и 1111(1510).

Поэтому, при сложении и вычитании чисел формата 8421-BCD действуют следующие правила:

  1. При сложении двоично-десятичных чисел каждый раз, когда происходит перенос бита в старший полубайт, необходимо к полубайту, от которого произошёл перенос, добавить корректирующее значение 0110 (= 610 = 1610 — 1010: разница количеств комбинаций полубайта и используемых значений).
  2. При сложении двоично-десятичных чисел каждый раз, когда встречается недопустимая для полубайта комбинация (число, большее 9), необходимо к каждой недопустимой комбинации добавить корректирующее значение 0110 с разрешением переноса в старшие полубайты.
  3. При вычитании двоично-десятичных чисел, для каждого полубайта, получившего заём из старшего полубайта, необходимо провести коррекцию, отняв значение 0110.

Пример операции сложения двоично-десятичных чисел:

Требуется: Найти число A = D + C, где D = 3927, C = 4856

Решение: Представим числа D и C в двоично-десятичной форме:
D = 392710 = 0011 1001 0010 0111BCD
C = 485610 = 0100 1000 0101 0110BCD

Суммируем числа D и С по правилам двоичной арифметики:

‘*’ — тетрада, из которой был перенос в старшую тетраду

‘**’ — тетрада с запрещённой комбинацией битов

В тетраду, помеченную символом *, добавляем шестёрку, так как по правилам двоичной арифметики перенос унёс с собой 16, а по правилам десятичной арифметики должен был унести 10. В тетраду, помеченную символом **, добавляем шестёрку и разрешаем распространение переноса, так как комбинация битов 1101 (что соответствует десятичному числу 13) является запрещённой.

Другие системы кодирования [ править | править код ]

В системе кодирования «2 из 5» [en] одна десятичная цифра кодируется 5 битами, из которых 2 бита установлены в 1, а 3 бита — в 0, что даёт ровно 10 комбинаций. Такая система обеспечивает лучшее обнаружение ошибок, поскольку изменение одного бита всегда даст недопустимую комбинацию; также всегда обнаруживаются однонаправленные изменения (несколько изменений 0→1 или 1→0). Кодирование «2 из 5» использовалось в компьютерах серий IBM 7070, IBM 7072 и IBM 7074; также применяется в некоторых странах для маркирования почты штрих-кодом.

Уплотнённые десятичные числа [en] позволяют разместить 3 десятичные цифры в 10 битах (2 10 =1024 комбинации, что достаточно для 3 десятичных цифр), причём кодирование устроено так, что преобразование между 10-битным кодом и тремя отдельными десятичными цифрами можно осуществить с помощью простой и быстрой логической схемы. Такое кодирование используется в десятичных числах с плавающей запятой, описанных в стандарте IEEE 754-2008.

О видах присваиваний в Верилоге

Верилог имеет три вида оператора присваивания: непрерывное, блокирующее и неблокирующее. Если с непрерывным, или постоянным присваиванием все более-менее понятно, то разница между блокирующим и неблокирующим присваиваниями не столь отчетлива и во многих руководствах она остается за кадром. К сожалению, нередко встречаются утверждения о том, что блокирующие присваивания «выполняются последовательно». Некоторые же идут настолько далеко, что дают советы использовать неблокирующие присваивания тем, кто хочет, чтобы их код исполнялся побыстрее. Цель этой статьи — развеять туман и помочь начинающим составить представление о том, что же именно представляют из себя различные виды присваиваний в синтезируемом подмножестве Верилога.

Непрерывное присваивание

То, что в Верилоге именуется «постоянным», или «непрерывным» присваиванием на самом деле всегда развертывается в комбинаторную схему. Непрерывное присваивание может встречаться в операторе assign, либо же прямо в декларации сигнала wire. Левой частью всегда является сигнал, правой — выражение, использующее любые другие сигналы. Значения регистровых переменных тоже являются сигналами.

// регистр, содержащий семплированное значение входа strobe
reg strobe_sampled;

// декларация сигнала strobe_negedge
wire strobe_negedge;
// непрерывное присваивание выражения сигналу strobe_negedge
assign strobe_negedge =

// декларация и присваивание совмещенные в одном операторе
wire strobe_posedge = strobe &

Читайте так же:
Xerox m20i сброс счетчика
Неблокирующее присваивание
Пример

always @(posedge clk) begin
if (swap_en) begin
reg_A <= reg_B;
reg_B <= reg_A;
end
end

Человеку непосвященному скорее всего покажется, что по фронту сигнала clk , если swap_en равен «1», регистры reg_A и reg_B примут значение, которое reg_B имел до свершения события. В действительности же эта запись соединяет выход регистра reg_A со входом reg_B , а выход reg_B со входом reg_A . Таким образом, если в момент положительного перепада clk сигнал swap_en установлен в «1», в каждый из регистров записывается предварительно установившееся на его входе значение. Для reg_A это значение reg_B , а для reg_B — это значение reg_A . Два регистра обменялись значениями одновременно!

Пример 2

always @(posedge clk) begin
strobe_sampled <= strobe;
if (strobe &

strobe_sampled) begin
// событие: положительный перепад на входе «strobe»
count <= count + 1;
end
end

По фронту clk происходит запись текущего значения strobe в регистр strobe_sampled . Параллельно происходит проверка,
а не единице ли равно текущее значение strobe и не ноль ли при этом значение strobe_sampled . Схема, синтезируемая из условия if использует выход регистра strobe_sampled . То есть, условие внутри if можно понимать как «strobe равно единице и предыдущее значение strobe равно нулю».

При этом не будет лишним повторить, что эта запись на самом деле не так проста, как кажется. Например, условие внутри if — это выход комбинаторной схемы, которая не связана с тактирующим сигналом и поэтому может быть описана извне:

strobe_sampled;
wire [7:0] count_incr = count + 1;
always @(posedge clk) begin
strobe_sampled <= strobe;
if (strobe_posedge)
count <= count_incr;
end

Блокирующее присваивание

дадут один и тот же результат. Оба выражения выполнятся одновременно, в обоих случаях «время выполнения» будет равно времени записи в соответствующий регистр значения на его входе. Пока выражения не зависят друг от друга, никакой разницы между блокирующими и неблокирующими присваиваниями нет.

В то же время, следующая запись являет собой что-то новое:

Эти две записи эквивалентны. Но вторую запись нельзя понимать как последовательную цепочку вычислений. Это верно лишь в том смысле, что всё выражение действительно выстраивается в схему, в которой сначала отрезаются 4 младших разряда, результат и второй операнд идут на вход сумматора, а выход сумматора отдается умножителю на три. Так это представляется в электрической схеме и человек для удобства нарисует эту схему слева направо и читать он ее будет последовательно. Но в получившейся схеме все это выражение выполняется непрерывно, так же как и в предыдущей записи с неблокирующим присваиванием. Запись результата в регистр, как и следовало ожидать, происходит по фронту тактового импульса.

Заключительный пример, использующий оба вида присваиваний, заодно напоминающий о неродстве оператора for с одноименными операторами в алгоритмических языках программирования:

// Эквивалентная запись:
// history[3] <= history[2]; history[2] <= history[1]; history[1] <= history[0]; history[0] <= current;
always @(posedge clk) begin
for (i = 1; i < 4; i = i + 1) history[i] <= history[i-1];

history[0] <= current;
end

// Эквивалентная запись:
// avg <= (history[3]+history[2]+history[1]+history[0])/4;
always @(posedge clk) begin
sum = 0;
for (i = 0; i < 4; i = i + 1) sum = sum + history[i];

Этот пример выдает скользящее среднее с запаздыванием на два такта.

Регистры и провода
Пример. Шинный мультиплексор.

Тернарные выражения удобны для описания подобных конструкций. Однако следует проявлять осторожность, потому что в действительности то, что описано в этом выражении является приоритетным шифратором. Кроме приоритетности, побочным эффектом может являться неравное время установки результата в зависимости от входных значений. «Честный» же мультиплексор можно описать только с помощью оператора case. Но оператор case может быть только внутри always блока, а нужно, чтобы шина data_in имела установившееся значение к очередному фронту тактового сигнала, то есть присваивание должно быть асинхронным.

Выручит конструкция такого вида:

always
case ()
3’b100: data_in <= ram_data;
3’b010: data_in <= io_data;
3’b001: data_in <= 8’hFF;
default: data_in <= 8’hZZ;
endcase

Выводы

Мы рассмотрели на несложных примерах три вида присваиваний, их схожесть и отличия. Если после прочтения этой статьи понимания разницы между блокирующим и неблокирующим присваиваниями не появилось, стоит попробовать запустить симуляцию рассмотренных в статье примеров, проанализировать результаты симуляции и, если возможно, результат синтеза схем. В прилагаемом архиве лежит проект для Altera Quartus II, в котором содержатся все использованные выше примеры.

24-разрядный счетчик состояний

Я пытаюсь создать счетчик в verilog, который подсчитывает, сколько часов было там, и после десяти миллионов это будет reset и начнется снова.

Я создал модуль с четырьмя четырьмя битами вместе с другим модулем, содержащим двадцать четыре D Flip flops, чтобы сохранить счет циклов, выведенных из сумматора.

Затем я хочу иметь конечный автомат, который находится в состоянии count до тех пор, пока не пройдет десять миллионов циклов, затем он переходит в состояние reset.

Звучит ли это правильно? Проблема в том, что я не уверен, как реализовать конечный автомат.

Может ли кто-нибудь указать мне на сайт/книгу, которые могли бы помочь мне в этом?

Как уже упоминал Павел S, нет необходимости в конечной машине, если вы хотите, чтобы ваш счетчик продолжал подсчет после переполнения. Вы можете сделать что-то вроде этого (непроверенный, может содержать опечатки):

Конечно, обычно вы должны использовать параметры, поэтому вам не нужно создавать настраиваемый модуль каждый раз, когда вы хотите переполнять счетчик. Я оставлю это вам;).

Читайте так же:
Minol счетчик как разобрать

[Edit] И вот несколько документов, которые помогут вам с FSM. Я просто искал Google для «verilog state machine»:

  • EECS150: Конечные машины в Verilog
  • Синтезируемые конечные методы машинного дизайна

Я не читал первую статью, поэтому я не могу прокомментировать это. Второй показывает различные типы кодирования FSM, среди которых 3 всегда блокирует стиль, который я очень рекомендую, потому что его намного легче отлаживать (переход состояния и вывод FSM аккуратно разделены). Ссылка, похоже, не работает, поэтому кэшированный результат Google.

Вам не нужен конечный автомат. У вас уже есть состояние в стойке. Все, что вам нужно сделать, это определить значение, которое вы хотите обернуть, и загрузить 0 в свой счетчик в этот момент.

Государственные машины не слишком сложны. Используйте localparam (с шириной, не забудьте ширину, не показанную здесь, потому что это всего лишь один бит), чтобы определить метки для ваших состояний. Затем создайте две переменные reg ( state_reg , state_next ). Переменная _reg — ваш фактический регистр. Переменная _next представляет собой «проводную реку» (провод, который может быть назначен внутри комбинационного всегда блока). Две вещи, которые нужно запомнить, — это сделать X_next = X_reg; в комбинационном всегда блоке (а затем и остальной части комбинационной логики) и X_reg <= X_next; в последовательном всегда блоке. Вы можете получить фантазию для особых случаев, но если вы придерживаетесь этих простых правил, тогда все должно работать. Я стараюсь не использовать экземпляр для очень простых вещей, таких как сумматоры, поскольку Verilog отлично поддерживает добавление.

Поскольку я работаю с FPGA, я назначаю начальные значения моим регистрам, и я не использую сигнал reset. Я не уверен, но для проектирования ASIC я думаю, что это наоборот.

Я нашел эту книгу, чтобы быть очень полезной. Существует также версия VHDL книги, поэтому вы можете использовать как бок о бок, так и Rosetta Stone, чтобы изучить VHDL.

3. Data types¶

In the Chapter 2 , we used the data-types i.e. ‘wire’ and ‘reg’ to define ‘1-bit’ & ‘2-bit’ input and output ports and signals. Also, some operators e.g. ‘and (&)’ and ‘or (|)’ etc. were discussed. In this chapter, some more information is provided on these topics.

3.2. Lexical rules¶

Verilog is case sensitive language i.e. upper and lower case letters have different meanings. Also, Verilog is free formatting language (i.e. spaces can be added freely), but we use the python like approach to write the codes, as it is clear and readable. Lastly in Verilog, ‘//’ is used for comments; also, multiline comments can written between /* and */.

3.3. Data types¶

Data types can be divided into two groups as follows,

  • Net group: Net group represents the physical connection between components e.g. wire, wand and wor etc. In the tutorials, we will use only one net data type i.e. ‘wire’, which is sufficient to create all types of designs.
  • Variable group: Variable group represents the storage of values in the design. It is always used for the variables, whose values are assigned inside the ‘always’ block. Also, input port can not be defined as variable group. ‘reg’ and ‘integer’ are the example of variable group, which can be synthesized. We will use only ‘reg’ for designing purpose.

3.4. Logic values¶

Verilog has four logic values i.e. 0, 1, z and x as shown in Table 3.1 ,

Table 3.1 Logic values ¶

LogicDescription
logic ‘0’ or false condition
1logic ‘1’ or true condition
zhigh impedance state (used for tri-state buffer)
xdon’t care or unknown value

3.5. Number representation¶

The number can be represented in various format as follows, which are listed in Table 3.2 . Note that, ‘reg’ can be replaced with ‘wire’ in the table.

  • Binary Format
  • Decimal Format
  • Signed Decimal Form
  • For hexadecimal and octal representations use ‘h’ and ‘o’ instead of ‘b’ in binary format.
  • ‘wire’ and ‘reg’ are in unsigned-format by default. These can be used for synthesis and simulation.
  • ‘integer’ is in signed-format by default. This should be used for simulation.

3.6. Signed numbers¶

By default, ‘reg’ and ‘wire’ data type are ‘unsigned number, whereas ‘integer’ is signed number. Signed number can be defined for ‘reg’ and ‘wire’ by using ‘signed’ keywords i.e. ‘reg signed’ and ‘wire signed’ respectively as shown in Table 3.2 .

Also, ‘signed numbers’ can be converted into ‘unsigned numbers’ using ‘$unsigned()’ keyword e.g. if ‘a = -3 (i.e. 101 in 2’s complement notation)’, then ‘$unsigned(a)’ will be ‘5 (i.e. value of 101)’. Similarly, ‘unsigned numbers’ can be converted into ‘signed numbers’ using ‘signed()’ keyword.

Although, numbers can be converted from one form to another, but it should be avoided as it may results in errors which are difficult to find.

3.7. Operators¶

In this section, various synthesizable operators of Verilog are discussed, which are shown in Table 3.3 .

3.8. Arithmetic operator¶

Three arithmetic operators i.e. +, -, and * can be synthesized in verilog.

3.8.1. Bitwise operators¶

Four bitwise operator are available in verilog i.e. ‘&’ (and), ‘|’ (or), ‘ ^ ‘ (xor) and ‘

’ (not). Further, we can combine these operators to define new operators e.g. ‘

’ can be used as ‘nand’ operations etc.

3.8.2. Relational operators¶

We already see the equality relational operation i.e. ‘==’ in section Section 2.2.4 . Further, five relational operators are defined in verilog i.e. ‘>’, ‘>=’, ‘<’, ‘<=’ and ‘!=’(not equal to).

3.8.3. Logical operators¶

We already see the ‘and’ relational operation i.e. ‘&&’ in section Section 2.2.4 . Further, three relational operators are defined in verilog i.e. ‘||’ (or), ‘&&’ and ‘!’(negation).

3.8.4. Shift operators¶

Verilog provides 4 types of shif operators i.e. >>, <<, >>>, <<<. Let ‘a = 1011-0011’, then we will have following results with these operators,

  • a >>3 = 0001-0110 i.e. shift 3 bits to right and fill the MSB with zeros.
  • a << 3 = 1001-1000 i.e. shift 3 bits to left and fill the LSB with zeros.
  • a >>>3 = 1111-0110 i.e. shift 3 bits to right and fill the MSB with sign bit i.e. original MSB.
  • a <<<3 = 1111-0110 i.e. same as a<<3.

3.8.5. Concatenation and replication operators¶

Concatenation operation ‘< >’ is used to combine smaller arrays to create a large array as shown below,

Replication operator is used to repeat certain bits as shown below,

3.8.6. Conditional operator¶

Conditional operator (?:) can be defined as follows,

Also, conditional expression can be cascaded as shown in Listing 3.1 , where 4×1 multiplexer is designed. Multiplexer is a combinational circuit which selects one of the many inputs with selection-lines and direct it to output. Fig. 3.1 illustrates the truth table for 4×1 multiplexer. Here ‘i0 — i3’ the input lines, whereas ‘s0’ and ‘s1’ are the selection line. Base on the values of ‘s0’ and ‘s1’, the input is sent to output line, e.g. if s0 and s1 are 0 then i0 will be sent to the output of the multiplexer.

../_images/tableMultiplexer.jpg

Fig. 3.1 Truth table of 4×1 multiplexer

The design generated in Fig. 3.2 is exactly same as the design generated by ‘if-else statement’ which is discussed in Section 4.7 . Therefore, Fig. 3.2 is described and compared with other designs in Section 4.7 . Further, Fig. 3.3 shows the output waveform of the multiplexer which is generated by Listing 3.1 .

../_images/conditionalEx.jpg

Fig. 3.2 Multiplexer generated by Listing 3.1

../_images/conditionalExWave.jpg

Fig. 3.3 Waveforms of Listing 3.1

3.8.7. Parameter and localparam¶

Parameter and localparam are used to create reusable codes along with avoiding the ‘hard literals’ from the code as shown in following section.

3.8.8. localparam¶

‘localparam’ keyword is used to defined the constants in verilog. In Listing 3.2 , N is defined in line 8 with value 3. Then this value is used in line 10 and 11. Suppose we want to change the constant value to 4. Now, we need to change it only at one place i.e. line 8 (instead of changing everywhere in the code e.g. line 10 and 11 in this example). In this way, we can remove the hard literals from the codes.

  • It is better to define the size of the local-parameters otherwise 32-bit signed-format will be used for the local parameters, as shown below

3.8.9. Parameter and defparam¶

‘localparam’ can not be modified after declaration. But we can define the parameter in the module, which can be modified during component instantiation in structural modeling style as shown below.

verilog

Я пытаюсь получить модуль, чтобы пройти проверку синтаксиса в ISE 12.4, и это дает мне ошибку, которую я не понимаю….

Я хотел бы знать о том, как работает Tri-state buffer в первую очередь. Во-вторых, я написал программу для установления протокола…

Я подробно объясняю свой вопрос сейчас, поскольку я понимаю, что я не объяснил свой вопрос хорошо. Я новичок в Verilog….

У меня есть вопрос об операции для нескольких массивов. Приведенный ниже код хорошо работает для фиксированного числа массивов wire [size-1:0]…

Я занимаюсь verilog HDL в quartus II уже 2 месяца и еще не синтезировал ни один из моих кодов. Я…

Я просматривал часть кода verilog и пришел через следующее abet_val<=strt?<<12 -1<1’b0>>, write_rly>:<<12 -1<1’b0>>, 1’b1>; что значит материал внутри фигурных скобок»…

У меня есть мое первое задание verilog через несколько дней, и по какой-то причине эти концепции убегают от меня. Я…

Я хочу сделать 16to4 bit Priority encoder, используя 4-2 priority encoder? Я использую код verilog, я использовал шесть 4 до…

Я пытаюсь использовать два переключателя для выбора частоты, которую я хочу мигать светодиодом. Мой код verilog выглядит следующим образом: `timescale…

Поэтому я работаю с 64-битными числами с плавающей точкой на Verilog для синтеза, все находятся в области <-1,1>. Теперь я…

Я пытаюсь провести эксперимент, чтобы увидеть, как различные напряжения питания влияют на частоту кольцевого генератора и надежность ячеек SRAM. У…

Я использую кнопку платы DE2 в качестве асинхронного сброса, но она не работает. Это мой модуль для n-битного регистра: module…

Im создает конвейерный процессор, и кажется, что последовательная логика создает задержку 1-цикла на моем компьютере, обновляя значение в PCFetch. Мой…

Я написал код verilog для базового сумматора с плавающей точкой. Алгоритм включает в себя 63-битный компаратор для получения знака результата….

в HEADMODULE я создаю 2D массив ‘data’ и хочу использовать его как память / хранилище. В STRCNVTDATA я назначаю его…

module encoder (op, in, clock, reset); //$display(«We are in initial procedural block»); input [15:0] in; input clock, reset; output [3:0]…

Я новичок в Verilog, и я должен создать файл testbench для ядра, которое я разработал. В testbench мне нужно читать…

Я разработал множитель 16 на 16 в verilog. Он компилируется без ошибок, но результаты не верны. Может ли кто-нибудь помочь…

Это программа, с которой у меня есть проблемы. Я думаю ее провод и Редж заявления. это было дано в одной…

У меня есть параметризованная ячейка-N-битный регистр, определенный как: module Register #(parameter n = 16)( output reg [n-1:0] OUTPUT, input [n-1:0]…

Я пытаюсь создать соединение от BCD до 7-сегментного декодера. Когда я нажимаю кнопку UP_* или DOWN_*, он должен считать вверх…

Вопрос о круговых регистрах: КОД: reg [7:0] value1; reg [7:0] value2; value1 = 50; value2 = value1 — 255; ВОПРОС:…

Apology the title не объясняет вопрос очень хорошо, я объясню это подробно ниже. Я новичок в verilog и мучительно застрял…

Я несколько озадачен этой проблемой: «Напишите модуль verilog для полного сложения N-битных целых чисел. Пусть параметр, число битов, равен 3….

Я могу использовать только один из четырех 7-сегментных дисплеев. Если я прокомментирую эту строку кодаled ledh(rn1_temp[7:4], segh_temp);, она будет работать…

я разработал небольшой RISC в verilog. Какие шаги я должен предпринять, чтобы создать компилятор c, который использует мой язык ассемблера?…

Я пытаюсь получить доступ к одному портовому блоку оперативной памяти. Ниже код, чтобы получить инструкцию, на которую указывает программа счетчика…

В цикле генерации часто нужно подключить первую итерацию проводов к входам (или некоторому уникальному набору проводов), прежде чем массив начнет…

Как я могу иметь массив постоянного значения или массив параметра? Я хочу использовать этот массив для выбора части регистра, поэтому…

В verilog у меня есть module name(input data,…, output…); Данные-это только один бит ввода, и мне нужно, чтобы он отображалсяreg…

Я новичок в verilog.Я не знаю, что, черт возьми, не так с моим кодом.Программа отображает значение счетчика в данный момент…

У меня есть этот код: module( // Set inputs and outputs output [7:0]ledg ); reg state; assign ledg[0] = state;…

Может ли кто-нибудь помочь мне со следующими предупреждениями ? WARNING:Xst:2677 — Node <ok1> of sequential type is unconnected in block…

Мне нужно вывести 32-битный битовый поток на pin-код в verilog. Я знаю, что verilog имеет стриминговые операторы pack и unpack,…

Я пытаюсь создать временную задержку, которая будет синтезировать, а не просто работать в моей симуляции. Задержка должна быть 1.439548 МС…

Я создаю datatable в своем коде, а затем привязываю gridview к этому datatable. Мои данные отображаются в gridview идеально. Когда…

У меня есть SV свойство, как показано ниже: propert my_property; @(posedge clk) disable iff(reset) (!s_of) throughout ($rose(halt) ##0 ((rx_prio) >…

Я делаю следующее В моем UVM testbench, чтобы создать seq и начать тест. У меня есть несколько последовательностей. Я копирую…

Я пытаюсь портировать довольно большой тестовый верстак из VCS в QuestaSim, и хотя все работает в VCS, есть некоторые проблемы…

Мой проект заключается в разработке кода verilog,который дает выход на 7segments (HEX0,HEX1,HEX2, HEX3), и выход должен увеличиваться при нажатии кнопки…

Я обнаружил, что ncvlog и Verdi могут читать дизайн через *.f который включает *.V файлы и + команды incdir. Легко…

Как сигналы / порты периферийного устройства в микроконтроллере соединены с PAD ?? Скажем, у моего SoC есть ‘ N ‘…

Мой вопрос о том, как использовать предопределенный элемент массива в иерархическом пути в Verilog (SystemVerilog). Например, я определил следующий строковый…

Я пытаюсь сделать счетчик, который считает до 18, и оттуда он должен вернуться к 0. Я разработал его с использованием…

Я пытаюсь реализовать задачу линейного программирования на FPGA. Я использовал реальный тип данных для создания чисел с плавающей точкой. Программа…

вот часть моего кода Verilog: reg [5:0] channel[0:7]; reg [5:0] tmp[0:7]; reg [2:0] counter_out; reg [2:0] scounter_samp; reg [2:0] scounter_bits;…

У меня есть модуль Verilog, который должен сдвигать один бит за раз. Пожалуйста, помогите мне завершить модуль. module shift_right1 (…

Ниже приведен код для захвата данных, и захваченные данные передаются через последовательный флип-флоп. Автор статьи о синхронных и асинхронных сбросах…

Я получаю ошибку при включении делителя часов (40 МГц) в мой контроллер VGA (плата Basys 2). Ошибка в моем кодировании…

У меня есть двоичный вход in(1 бит последовательный вход), который я хочу задержать Mтактовыми импульсами, а затем умножить (и) 2…

Я написал модуль регистра 8bit как это: module ff_8 #( parameter q0=0 )( input clk, input rst_n, input enable, input…

Я пытаюсь извлечь все имя* из следующего набора шаблонов. name1 name2 ( .name3 ( name4 ) , .name5 ( name6…

Я пытаюсь отслеживать количество раз, когда программа проходит через вложенный блок generate в verilog и использует его в качестве индекса…

Я только начал изучать verilog, может кто-нибудь, пожалуйста, скажите мне, что значит «#» войти в verilog? Например: счетчик ;

Кто-нибудь: Я пытаюсь использовать функцию аннотации значения сигнала gtkwave-3-3.62 для иерархической структуры RTL с RTLbrowse. Ответ парсера vermin не содержит…

Привет я получаю не могу определить язык C:/Modeltech_pe_edu_10.3c/examples ошибка при попытке компиляции кода verilog. Мне это кажется довольно упрощенным. Что-то…

Я использую Moneris eSelectPlus и храню кредитные карты в хранилище и получаю к ним доступ с помощью токена. Есть ли…

У меня есть часть кода моего дизайна следующим образом. parameter n=256; input [n-1:0] x; output y; initial begin x =…

Поэтому я пытаюсь написать функцию, которая запрашивает 3 вещи, сумму, которую нужно инвестировать, процентную ставку и продолжительность инвестиций, а затем…

У меня есть две таблицы ex: User и Role. с отношением «многие к одному» между Пользователем и ролью (один пользователь…

Я пытался преобразовать несколько битов в один бит, используя метод литья типа, но lint checker (LEDA) не позволяет [0:0]и указывает…

Я пытаюсь создать пульсацию alu из одного бита alu, все работает хорошо, за исключением slt операции это реализовано так, для…

Я пытаюсь умножить два массива 16-битных чисел с фиксированной точкой в verilog. Я взял в 2 битовых потока по 8…

Я делаю карточную игру, где вы начинаете, и компьютер генерирует карту игрок затем должен нажать кнопку либо выше ниже или…

В УВМ, фабрика самая важная вещь. Так как это реализовано внутри. Означает, как он хранит различные объекты и создает универсальную…

Я реализую сортировку оболочки в коде Verilog. У меня есть массив, состоящий из 10 элементов, каждый 20-битный. Я не могу…

Мне нужно писать код с помощью простых логических элементов. Как назначить один выход для того чтобы быть следующим входным сигналом…

Я написал следующий верстак в verilog, который записывает файл, а затем считывает значения обратно. // Verilog Test Fixture Template `timescale…

У меня один вход и один выход. И я хочу повернуть выход на 1, если вход был 100 тиков активен…

У меня есть проблема, где кажется, что отрицательное число интерпретируется как положительное, и два значения добавляются, а не вычитаются. Вот…

Во-первых, пожалуйста, простите любые орфографические ошибки, английский не мой первый язык. Для проекта я пытаюсь смоделировать некоторую «базовую» логику с…

Я пишу код для моделирования декодера bcd до семи сегментов. Когда я делаю это, я получаю красные и синие линии…

Я написал небольшой код Verilog и тестовый стенд для него. Он включен ниже.. Я хочу записать результаты testbench в файл…

Если я отправляю некоторые параметры в любой модуль в verilog, как: SUM( .a(a), .b(b), .out(out)); Это будет работать хорошо. Что…

Я пытался реализовать часы 1 Гц с использованием часов 100 МГц. Однако в Xilinx ISE скорость выполнения ISIM составляет около…

Я пытаюсь сделать свой тестовый стенд более масштабируемым и с набором функций PLI, которые требуют имени пути к экземпляру. I’m…

module syncounter(qa,qabar,qb,qbbar,overflow,ja,ka,jb,kb,clk,rst); output qa,qabar,qb,qbbar,overflow; input ja,ka,jb,kb,clk,rst; reg qa,qb,qabar,qbbar,overflow; //var1 = qa; jkflip jk1(qa,qabar,ja,ka,clk,rst); assign var1 = qa; jkflip jk2(qb,qbbar,var1,var1,clk,rst); always…

Мне нужно сделать какой-то интерфейс между моим PS и PL на чипе Zynq. Мне нужен блок который примет 64bit длиннее…

Код выглядит следующим образом: module abc(a,b,c…); inout [15:0] a; endmodule module top; wire [15:0] data_a; endmodule Как установить связь между…

Обычно я использую @оператор для ожидания любого изменения логического значения конкретного сигнала. Например, чтобы ждать любого изменения сигналаa, я обычно…

Я полная катастрофа при использовании verilog для реализации, но эта проблема ходит по моим нервам около часа, и я не…

Я хочу сохранить данные в 2-мерном массиве в синтаксисе verilog. я написал код. пожалуйста любое одно может проверить код и…

Теперь я делаю чтение входных данных из txt-файла и записываю результаты в txt-файл. Однако результаты, выполняемые в симуляции, хорошо работают,…

У меня есть 52 бит двоичный в Verilog (like f). Я хочу преобразовать его в 1.f. Что мне делать? re=<1’b1,51’b0>;…

Я написал код Verilog, чтобы найти остаток при делении двух чисел. Но у меня есть одна проблема. У меня есть…

Итак, у меня есть areg[7:0] corr_Output[0:63];, который заполнен значениями в моем модуле. Как найти максимальное число в этом массиве за…

У меня есть код MATLAB с фиксированной точкой, и он должен быть преобразован в Verilog. Ниже приведен код Matlab. yfftshift5000x0…

Я хотел построить небольшой код для 2*1 mux, где входы поступают из разных модулей (чтобы сделать его более практичным), но…

Есть ли инструмент, который максимально расширяет модули verilog? Например: module and_gate(…); /* module description … */ endmodule module test(…); and_gate…

Я хочу улучшить рабочую частоту моей конструкции, в регистре для регистрации времени анализа я заметил много задержки в комбинационных элементов….

У меня есть 2 блока всегда, один, который подсчитывает количество тактов, которые прошли, способные к асинхронному сбросу, и другой, который…

Я магистрант в настоящее время делаю свой окончательный проект, я планирую разработать 32-битный MIPS с FPU и реализовать в плате…

module concat( input [7:0] data_in, input rst, input clk, output reg[127:0] data_out, output reg valid_out ); integer i; reg[127:0] datatemp=0;…

Я пытаюсь запустить счетчик (от 0 до 9) с условием, например, когда условие происходит, счетчик сбрасывается и начинает отсчет до…

Я пытаюсь написать топовый верилог с экземплярами нескольких идентичных модулей. первый экземпляр должен быть подключен снаружи, в то время как…

У меня есть буфер, который содержит 512 бит, и я хочу отправить только разреженные биты в другой модуль в Verilog….

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector