|
Вопросы начинающего в ПЛИС |
|
|
|
Feb 3 2010, 11:15
|
Частый гость
 
Группа: Участник
Сообщений: 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 Первая просьба. Посмотрите, вообще правильно пишу? Второй вопрос, Квартус выдает следующий анализ:
Такой сдвиг относительно исходных сигналов - это нормально? Я понимаю, задержка и все такое, но как-то много. И как избавиться от коротких импульсов, возникающих, видимо, как раз из-за этой задержки? Спасибо.
|
|
|
|
|
 |
Ответов
|
Feb 3 2010, 15:44
|
Частый гость
 
Группа: Участник
Сообщений: 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. Т.е., по сути, хочу реализовать циклический сдвиг, но почему-то не работает. Взгляните пожалуйста.
|
|
|
|
|
Feb 3 2010, 16:26
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494

|
Цитата(des00 @ Feb 3 2010, 19:13)  так циклический или логический? по коду все нормально %) циклический, хочу, чтобы эта комбинация по кругу выдавалась на выход. просто при установке assign S = Q[0], квартус говорит: Pin "S" is stuck at GND, а это странно, потому что при циклическом сдвиге на этой позиции должны появляться единицы...
|
|
|
|
|
Feb 3 2010, 23:15
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 21-06-09
Пользователь №: 50 494

|
Цитата(des00 @ Feb 3 2010, 20:29)  тогда и описывайте его. вы же пишете выражение арифметического сдвига(см. стандарт на язык верилог), квартус все правильно делает. В 0 бите всегда будет 0 %) Так вроде арифметический - это <<, а циклический <<<. Разве не так?
|
|
|
|
|
Feb 4 2010, 03:49
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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
--------------------
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|