Костян 0 3 августа, 2012 Опубликовано 3 августа, 2012 · Жалоба Дано регистр reg [40*8-1:0]dataPacket Необходимо перебрать следующие его биты [7:0] [15:8] и т.д. как записывать эту комбинацию понятно for (i = 0; i <= 39; i = i + 1) какойТоРегистр <= dataPacket[8*i+:8]; Как записать другие комбинации ? [3:0] [11:8] [19:16] и т.д. Верно ли решение ? for (i = 0; i <= 39; i = i + 1) какойТоРегистр <= dataPacket[8*i+:4]; И совсем не понятно мне, как сделать последную комбинацию [7:4] [15:12] [23:20] и т.д. for (i = 0; i <= 39; i = i + 1) какойТоРегистр <= dataPacket[4+8*i+:4]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksimp 0 3 августа, 2012 Опубликовано 3 августа, 2012 · Жалоба Что плохого в вашеи варианте? какойТоРегистр <= dataPacket[4+8*i+:4]; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Костян 0 6 августа, 2012 Опубликовано 6 августа, 2012 · Жалоба Что плохого в вашеи варианте? какойТоРегистр <= dataPacket[4+8*i+:4]; я был не уверен, что это правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба Ну можно же всегда попробовать в симуляторе :-). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Костян 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба Ну можно же всегда попробовать в симуляторе :-). можно. но на мой взгляд проше четко понимать, что ты описываешь, тогда и метаний между блокнотом и симулятором не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 3 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба на мой взгляд проше четко понимать, что ты описываешь, Ухвачена самая суть! Как только прорисуете на бумаге, что Вы хотите получить (физически, в терминах триггеров и комбинаторной логики), вопросы отпадут сами собой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 1 октября, 2012 Опубликовано 1 октября, 2012 · Жалоба Для того, чтобы не плодить тем по простым вопросам, решил написать сюда. Есть выражение: thr1 <= (data_o > 32'd30) ? 1'b1 : 1'b0; thr0 <= (data_o < -32'd30) ? 1'b1 : 1'b0; Первая строчка работает исправно, вторая строчка выдает 0 при бОльших по модулю отрицательных числах вместо 1. В чем может быть дело? Неужели в таком выражении нельзя использовать сравнение со знаковыми числами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 1 октября, 2012 Опубликовано 1 октября, 2012 · Жалоба Первая строчка работает исправно, вторая строчка выдает 0 при бОльших по модулю отрицательных числах вместо 1. В чем может быть дело? Неужели в таком выражении нельзя использовать сравнение со знаковыми числами? типы данных приведите, иначе не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doublekey 0 17 октября, 2012 Опубликовано 17 октября, 2012 · Жалоба module signed_comp( input clk, input signed [31:0] data, output reg [1:0] thr ); parameter int THR_LVL = 30; always_ff @(posedge clk) begin thr[0] <= (data > THR_LVL) ? '1 : '0; thr[1] <= (data < -THR_LVL) ? '1 : '0; end endmodule Костян, можно попробовать с многомерным массивом на sv reg [39:0][1:0][3:0] dataPacket; Тогда: dataPacket[0] это dataPacket[7:0], dataPacket[1] это dataPacket[15:8] и т.д. dataPacket[0][0] это dataPacket[3:0], dataPacket[0][1] это dataPacket[7:4] и т.д. В циклах сделать 2 итератора. Вроде бы нагляднее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться