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

 
 
> Вопросы начинающего в ПЛИС
Shaienn
сообщение Feb 3 2010, 11:15
Сообщение #1


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

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



Добрый день.

Начинаю работать с ПЛИС. Хочу сделать устройство, выделяющее четные и нечетные единицы в исходной информационной последовательности.

написал следующий код:
Код
module Try_AND
(
    // {{ALTERA_ARGS_BEGIN}} DO NOT REMOVE THIS LINE!
    clock, data, ones, zeroes
    // {{ALTERA_ARGS_END}} DO NOT REMOVE THIS LINE!
);
// Port Declaration
    input clock;
    input data;
    output ones;
    output zeroes;
    // {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
    // {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
    
    wire p1;
    reg out_c;
    reg out_n;
    
    assign ones = out_c & data;
    assign zeroes = out_n & data;
    assign p1 = data & clock;    
    
    always @(posedge p1) begin
                         out_c<=~out_c;
                         out_n<=out_c;
                         end
        
            
endmodule


Первая просьба. Посмотрите, вообще правильно пишу?

Второй вопрос, Квартус выдает следующий анализ:
Прикрепленное изображение


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

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shaienn
сообщение Feb 3 2010, 15:44
Сообщение #2


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

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



Возник еще один вопрос:

Код
input clock;
output S;

reg [6:0] Q;

initial begin
        Q = 7'b1111110;
    end

always @(posedge clock)
begin
Q <= Q <<< 1;
end

assign S = Q[6];


Хочу с каждым тактовым импульсом двигать содержимое регистра Q и выдавать на выход значение в шестой ячейке регистра Q. Т.е., по сути, хочу реализовать циклический сдвиг, но почему-то не работает. Взгляните пожалуйста.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 3 2010, 16:13
Сообщение #3


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

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



Цитата(Shaienn @ Feb 3 2010, 09:44) *
Хочу с каждым тактовым импульсом двигать содержимое регистра Q и выдавать на выход значение в шестой ячейке регистра Q. Т.е., по сути, хочу реализовать циклический сдвиг, но почему-то не работает. Взгляните пожалуйста.

так циклический или логический? по коду все нормально %)


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


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

Группа: Участник
Сообщений: 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
Сообщение #5


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

Группа: Модераторы
Сообщений: 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
Сообщение #6


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

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



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


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


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

Группа: Модераторы
Сообщений: 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 3 2010, 11:15
- - Костян   У вас асинхронный дизайн !!! Так делат...   Feb 3 2010, 11:26
- - Shaienn   попробовал применить Ваш совет: Кодmodule Try_AND...   Feb 3 2010, 11:57
|- - Костян   Цитата(Shaienn @ Feb 3 2010, 09:57) Код ...   Feb 3 2010, 12:16
|- - Dima_G   Цитата(Shaienn @ Feb 3 2010, 15:57) Резул...   Feb 3 2010, 12:20
- - Shaienn   не, Вы меня, кажется, немножко не поняли. Задача ...   Feb 3 2010, 12:22
|- - Dima_G   Цитата(Shaienn @ Feb 3 2010, 15:22) Так в...   Feb 3 2010, 12:34
- - sazh   Цитата(Shaienn @ Feb 3 2010, 14:15) Добры...   Feb 3 2010, 12:31
|- - Shaienn   Цитата(sazh @ Feb 3 2010, 15:31) В исходн...   Feb 3 2010, 12:43
|- - sazh   Цитата(Shaienn @ Feb 3 2010, 15:43) услов...   Feb 3 2010, 12:52
- - yuri_d   Цитата(Shaienn @ Feb 3 2010, 14:15) Такой...   Feb 3 2010, 12:58
- - Shaienn   Всем спасибо. Вопросы пока кончились.   Feb 3 2010, 13:13
- - Dima_G   .   Feb 3 2010, 13:17
|- - Dima_G   << - битовый сдвиг <<< - арифметиче...   Feb 4 2010, 03:49
- - Shaienn   Учу-учу матчасть Оказывается арифметический и ци...   Feb 4 2010, 04:04
|- - des00   Цитата(Shaienn @ Feb 3 2010, 22:04) Оказы...   Feb 4 2010, 04:10
|- - Shaienn   Цитата(des00 @ Feb 4 2010, 08:10) вроде о...   Feb 4 2010, 04:32
|- - des00   Цитата(Shaienn @ Feb 3 2010, 22:27) Должн...   Feb 4 2010, 04:33
- - Dima_G   Хм, а Вы к Quartus отлаживате? Тогда делайте иници...   Feb 4 2010, 04:37
- - Shaienn   Снова добрый день. Спаял я макетную плату для epm...   Feb 10 2010, 07:21
- - sazh   Цитата(Shaienn @ Feb 10 2010, 10:21) Снов...   Feb 10 2010, 07:36
- - Shaienn   Цитата(sazh @ Feb 10 2010, 11:36) В Кварт...   Feb 10 2010, 07:45


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

 


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


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