реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> упаковка двоичного кода в восьмибитную память, как сделать некоряво
torik
сообщение Apr 22 2007, 18:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Вот... корявенько тему назвал, а задача такая:
В массиве
Код
reg [7:0] tabl [5:0]
лежат данные, к примеру
Код
8`b10000000
8`b01000000
...................

где то в программе я могу обращаться к этим данным, как tabl[i], где i - номер ячейки в массиве.

Кроме того, быть еще счетчик k, принимающий значения 0..7. Необходимо некой переменной Х (выход 1 бит...) присваивать значение, равное номеру бита k ячейки с номером i.

Кто знает каким методом наиболее оптимально (меньшее кол-во ячеек) дешыфрировать это?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Apr 22 2007, 18:42
Сообщение #2


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



вы можете заводить регистр k в оператор индекса массива - синтезатор это скушает и подумает над оптимальной реализацией для вашей архитектуры.
Код
bit k [2:0];
int i;
// do something with index i
always_comb X=tabl[i][k];
always_ff@(xedge clk) if (reset==1) k<=0; else k<=k+1;


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
torik
сообщение Apr 22 2007, 20:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



ага, поглядим...
тока вроде удобнее объявлять не как int или еще чего а сразу reg[x:у], т.к. разрядность заранее вся известна...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Apr 22 2007, 21:27
Сообщение #4


тоже уже Гуру
******

Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973



Цитата(torik @ Apr 22 2007, 21:52) *
тока вроде удобнее объявлять не как int или еще чего а сразу reg[x:у], т.к. разрядность заранее вся известна...

разрядность i синтезатору и так известна вот из этих двух выражений :
reg [7:0] tabl [5:0]
и
X=tabl[i][k]

при синтезе i у вас не будет 32-битным, но 3-битным числом (если это i еще где-нибудь не использовалось с бOльшим диапазоном значений),указывать разрядность имеет смысл если вы к примеру не хотите заморачиваться с переполнением счётчика - на пример :
always_ff@(xedge clk) if (reset==1) k<=0; else k<=k+1;
в вашем же случае если i и будет счётчиком, проверку делать придётся всё-равно - поэтому высчитывать точно разрядность необходимости нет
always_ff@(xedge clk) if (reset==1) i<=0; else
begin
if(i==5) i<=0;
else i<=i+1;
end


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
torik
сообщение Apr 23 2007, 07:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



спасиб, учел...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016