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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Вопросы начинающего в ПЛИС
Shaienn
сообщение Feb 3 2010, 16:26
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des00 @ Feb 3 2010, 19:13) *
так циклический или логический? по коду все нормально %)


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


просто при установке assign S = Q[0], квартус говорит: Pin "S" is stuck at GND, а это странно, потому что при циклическом сдвиге на этой позиции должны появляться единицы...
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 3 2010, 17:29
Сообщение #17


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 10:26) *
циклический, хочу, чтобы эта комбинация по кругу выдавалась на выход.

тогда и описывайте его. вы же пишете выражение арифметического сдвига(см. стандарт на язык верилог), квартус все правильно делает. В 0 бите всегда будет 0 %)


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 3 2010, 23:15
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des00 @ Feb 3 2010, 20:29) *
тогда и описывайте его. вы же пишете выражение арифметического сдвига(см. стандарт на язык верилог), квартус все правильно делает. В 0 бите всегда будет 0 %)


Так вроде арифметический - это <<, а циклический <<<. Разве не так?
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 4 2010, 03:49
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



<< - битовый сдвиг
<<< - арифметический

Код
input clock;
output S;

reg [6:0] Q;

initial begin
        Q = 7'b1111110;
    end

always @(posedge clock)
begin
  Q <= {Q[5:0], Q[6]};
end

assign S = Q[6];
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 4 2010, 03:49
Сообщение #20


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 17:15) *
Так вроде арифметический - это <<, а циклический <<<. Разве не так?

не зря я вам посоветовал, учите матчасть %)

IEEE Standard Verilog Hardware Description Language IEEE Std 1364-2001 -> 4.1.12 Shift operators

Цитата
4.1.12 Shift operators
There are two types of shift operators, the logical shift operators, << and >>, and the arithmetic shift opera-
tors, <<< and >>>. The left shift operators, << and <<<, shall shift their left operand to the left by the num-
ber by the number of bit positions given by the right operand. In both cases, the vacated bit positions shall be
filled with zeroes. The right shift operators, >> and >>>, shall shift their left operand to the right by the num-
ber of bit positions given by the right operand. The logical right shift shall fill the vacated bit positions with
zeroes. The arithmetic right shift shall fill the vacated bit positions with zeroes if the result type is unsigned.
It shall fill the vacated bit positions with the value of the most-significant (i.e., sign) bit of the left operand if
the result type is signed. If the right operand has an unknown or high impedence value, then the result shall
be unknown. The right operand is always treated as an unsigned number and has no effect on the signedness
of the result. The result signedness is determined by the left-hand operand and the remainder of the expres-
sion, as outlined in 4.5.1


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 4 2010, 04:04
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Учу-учу матчасть smile.gif

Оказывается арифметический и циклический сдвиг - это одно и то же.

Так вот мне и нужен циклический(арифметический) сдвиг. Который, согласно мануалу - <<<;

Нужно, чтоб работало именно так:
Цитата
It shall fill the vacated bit positions with the value of the most-significant (i.e., sign) bit of the left operand if
the result type is signed.


Но непонятно, что имеется в виду под словами result type?

Выполнив:
Q = 7'b0000111
Q <= Q <<< 3
Хочу получить:
Q == 7'b0111000....
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 4 2010, 04:10
Сообщение #22


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 22:04) *
Оказывается арифметический и циклический сдвиг - это одно и то же.

вроде одни и те же доки читаем, а результат разный %)

Цитата
Нужно, чтоб работало именно так:

направление сдвига не перепутали ?smile.gif слова про msb относились к сдвигу вправо >>>, а не влево <<< %)

Цитата(Shaienn @ Feb 3 2010, 22:04) *
Выполнив:
Q = 7'b0000111
Q <= Q <<< 3
Хочу получить:
Q == 7'b0111000.

в данном случае именно так и будет, но если Q получает значение только по initial, то квартус Q тупо подвесит VCC/GND и выдаст предупреждение.
но если вы имели в виду вот это
Цитата
Q = 7'b1000111
Q <= Q <<< 3
Хочу получить:
Q == 7'b0111100

то такое одними стандартными сдвигами не сделать, лучше воспользоваться конкатенацией %) например q <= {q[6:0], q[7]} для циклического сдвига на 1 бит.


--------------------
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 4 2010, 04:32
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(des00 @ Feb 4 2010, 08:10) *
вроде одни и те же доки читаем, а результат разный %)


направление сдвига не перепутали ?smile.gif слова про msb относились к сдвигу вправо >>>, а не влево <<< %)


в данном случае именно так и будет, но если Q получает значение только по initial, то квартус Q тупо подвесит VCC/GND и выдаст предупреждение.
но если вы имели в виду вот это

то такое одними стандартными сдвигами не сделать, лучше воспользоваться конкатенацией %) например q <= {q[6:0], q[7]} для циклического сдвига на 1 бит.


Да, хочу, чтобы работало как в приведенном Вами последнем примере. Спасибо за информацию. Буду грызть дальше.


Цитата(Dima_G @ Feb 4 2010, 07:49) *
<< - битовый сдвиг
<<< - арифметический

Код
input clock;
output S;

reg [6:0] Q;

initial begin
        Q = 7'b1111110;
    end

always @(posedge clock)
begin
  Q <= {Q[5:0], Q[6]};
end

assign S = Q[6];


Должно бы работать, но на выходе 0.

Цитата(des00 @ Feb 4 2010, 08:10) *
если Q получает значение только по initial, то квартус Q тупо подвесит VCC/GND и выдаст предупреждение.


А как правильно задать значение для Q?
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 4 2010, 04:33
Сообщение #24


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Shaienn @ Feb 3 2010, 22:27) *
Должно бы работать, но на выходе 0.

у меня работает, моделирование в аттаче %)
скорее всего квартус игнорирует ваш initial, надо ему сказать что бы он этого не делал. либо сделать какой либо сигнал сброса вашей схемы, который инициализирует регистр Q
делается это в секции settings -> synthesis -> options -> Ignore Initial
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Feb 4 2010, 04:37
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Хм, а Вы к Quartus отлаживате? Тогда делайте инициализацию например по Reset
Или используйте для отладки симуляторы с поддержкой несинтезируемого подмножества smile.gif
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 10 2010, 07:21
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Снова добрый день.

Спаял я макетную плату для epm3032. Вроде все правильно сделал. Обнаруживается через ByteBlaster.
Зашиваю следующий код:

Код
module Try_AND
(
    // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
    reset, clock, C
    // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// Port Declaration
    input reset;
    input clock;
    output C;

assign C = clock && ~reset;
endmodule


Контакт reset - через кнопку на 3.3 вольта.
На выходе С = 0, независимо от состояние ноги reset. Но, в то же время, когда изменишь эту строчку на assign C = clock, на выходе, как и завещано, сигнал тактирования. Почему-то не обрабатывается сигнал reset. Подскажите направление поисков.

PS Pin Assignment сделал.

Спасибо.

Сообщение отредактировал Shaienn - Feb 10 2010, 07:27
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 10 2010, 07:36
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Shaienn @ Feb 10 2010, 10:21) *
Снова добрый день.
Контакт reset - через кнопку на 3.3 вольта.
На выходе С = 0, независимо от состояние ноги reset. Но, в то же время, когда изменишь эту строчку на assign C = clock, на выходе, как и завещано, сигнал тактирования. Почему-то не обрабатывается сигнал reset. Подскажите направление поисков.


В Квартусе синтезируемая инициализация пройдет таким образом без ресета
reg [6:0] Q = 7'b1111110;

Что касется кнопки, квартус не причем. Со схематикой кнопки намудрили. (На входе ресет надо получить не только уверренную 1, но и уверенный ноль (Если в функции с приоритетностью не напутано. Скобок для наглядности не жалейте. чтобы в стандарт не лазить).
Смотрите реализацию схемы в RTL просмотрщике квартуса.
Go to the top of the page
 
+Quote Post
Shaienn
сообщение Feb 10 2010, 07:45
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494



Цитата(sazh @ Feb 10 2010, 11:36) *
В Квартусе синтезируемая инициализация пройдет таким образом без ресета
reg [6:0] Q = 7'b1111110;

Что касется кнопки, квартус не причем. Со схематикой кнопки намудрили. (На входе ресет надо получить не только уверренную 1, но и уверенный ноль (Если в функции с приоритетностью не напутано. Скобок для наглядности не жалейте. чтобы в стандарт не лазить).
Смотрите реализацию схемы в RTL просмотрщике квартуса.


Точно. Подвесил pulldown резистор к ноге и все стало как надо. Спасибо большое.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:54
Рейтинг@Mail.ru


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