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

 
 
 
Reply to this topicStart new topic
> Сделать сдвигающий регистр, С парал. загрузкой -"потенциалом"
muravei
сообщение Sep 5 2006, 06:22
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Естественно. сигналы загрузки и сдвига разные.(при активном загрузки-сдвиг запрещен)
Может есть что-то готовое, я не очень копенгаген, пока.
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 5 2006, 07:04
Сообщение #2


Гуру
******

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



Есть и готовое. Скачайте с сайта Xilinx документ xst.pdf
Go to the top of the page
 
+Quote Post
Victor®
сообщение Sep 5 2006, 07:13
Сообщение #3


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(muravei @ Sep 5 2006, 09:22) *
Естественно. сигналы загрузки и сдвига разные.(при активном загрузки-сдвиг запрещен)
Может есть что-то готовое, я не очень копенгаген, пока.


ftp://ftp.xilinx.com/pub/documentation/misc/examples_v8.zip


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
muravei
сообщение Sep 5 2006, 10:28
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Сам придумал: инвертор, два 2и-не и Д- триггер с РС входами
Go to the top of the page
 
+Quote Post
Victor®
сообщение Sep 5 2006, 11:12
Сообщение #5


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(muravei @ Sep 5 2006, 13:28) *
Сам придумал: инвертор, два 2и-не и Д- триггер с РС входами


Вот пример

Код
--
-- 8-bit Shift-Left Register with Positive-Edge Clock,
-- Asynchronous Parallel Load, Serial In, and Serial Out
--

library ieee;
use ieee.std_logic_1164.all;

entity shift_registers_6 is
    port(C, SI, ALOAD : in std_logic;
         D : in std_logic_vector(7 downto 0);
         SO : out std_logic);
end shift_registers_6;

architecture archi of shift_registers_6 is
    signal tmp: std_logic_vector(7 downto 0);
begin

    process (C, ALOAD, D)
    begin
        if (ALOAD='1') then
            tmp <= D;
        elsif (C'event and C='1') then
            tmp <= tmp(6 downto 0) & SI;
        end if;
    end process;

    SO <= tmp(7);

end archi;


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Alex_xxx
сообщение Sep 6 2006, 13:16
Сообщение #6





Группа: Новичок
Сообщений: 10
Регистрация: 24-11-05
Пользователь №: 11 333



Цитата(muravei @ Sep 5 2006, 09:22) *
Естественно. сигналы загрузки и сдвига разные.(при активном загрузки-сдвиг запрещен)
Может есть что-то готовое, я не очень копенгаген, пока.



Как пример могу предложить вариант модуля описаного на Verilog с паралельной загрузкой:



module shifter (clk, rst, data_in, serial_out, load);

input clk; wire clk;
input rst; wire rst;

input [7:0] data_in; wire [7:0] data_in;
input load; wire load;

output serial_out; wire serial_out;

reg [7:0] shift_reg;

assign serial_out = shift_reg[7];

always @(posedge clk)
if (!rst) begin shift_reg <= 8'b00000000; end
else if (load) begin shift_reg <= data_in; end
else
begin shift_reg[0] <= shift_reg[7]; // <= 1'b0; // dlya zapolneniya 0
shift_reg[1] <= shift_reg[0];
shift_reg[2] <= shift_reg[1];
shift_reg[3] <= shift_reg[2];
shift_reg[4] <= shift_reg[3];
shift_reg[5] <= shift_reg[4];
shift_reg[6] <= shift_reg[5];
shift_reg[7] <= shift_reg[6];
end

endmodule
Go to the top of the page
 
+Quote Post
PetrK
сообщение Aug 19 2007, 11:59
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 19-12-05
Из: SPb
Пользователь №: 12 417



Цитата(Alex_xxx @ Sep 6 2006, 17:16) *
Как пример могу предложить вариант модуля описаного на Verilog с паралельной загрузкой:
module shifter (clk, rst, data_in, serial_out, load);

input clk; wire clk;
input rst; wire rst;

input [7:0] data_in; wire [7:0] data_in;
input load; wire load;

output serial_out; wire serial_out;

reg [7:0] shift_reg;

assign serial_out = shift_reg[7];

always @(posedge clk)
if (!rst) begin shift_reg <= 8'b00000000; end
else if (load) begin shift_reg <= data_in; end
else
begin shift_reg[0] <= shift_reg[7]; // <= 1'b0; // dlya zapolneniya 0
shift_reg[1] <= shift_reg[0];
shift_reg[2] <= shift_reg[1];
shift_reg[3] <= shift_reg[2];
shift_reg[4] <= shift_reg[3];
shift_reg[5] <= shift_reg[4];
shift_reg[6] <= shift_reg[5];
shift_reg[7] <= shift_reg[6];
end

endmodule


что-то у меня на выходе данные отсутствуют.

дело в коде, приведенном выше или я что-то делаю неправильно?
скриншот прилагается

спасибо
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Aug 20 2007, 12:37
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(PetrK @ Aug 19 2007, 14:59) *
что-то у меня на выходе данные отсутствуют.

дело в коде, приведенном выше или я что-то делаю неправильно?
скриншот прилагается

спасибо

У вас синхронная загрузка, можно увеличенный фрагмент симуляции, чтобы было видно сигнал LOAD??

Сообщение отредактировал -=Vitaly=- - Aug 20 2007, 12:37
Go to the top of the page
 
+Quote Post
PetrK
сообщение Aug 20 2007, 12:48
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 19-12-05
Из: SPb
Пользователь №: 12 417



Цитата(-=Vitaly=- @ Aug 20 2007, 16:37) *
У вас синхронная загрузка, можно увеличенный фрагмент симуляции, чтобы было видно сигнал LOAD??


в первом скриншоте длительность LOAD 1 период клока, я пробовал его больше делать все равно на выходе всегда ноль.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
muravei
сообщение Aug 20 2007, 17:04
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Alex_xxx @ Sep 6 2006, 17:16) *
begin shift_reg[0] <= shift_reg[7]; // <= 1'b0; // dlya zapolneniya 0

Мне кажется странной эта строчка , получается что это кольцевой регистр?
Go to the top of the page
 
+Quote Post
shamray
сообщение Aug 20 2007, 19:04
Сообщение #11


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

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Цитата(muravei @ Aug 20 2007, 20:04) *
Мне кажется странной эта строчка , получается что это кольцевой регистр?


Да, именно колцевой. Кстати, все эти присваивания можно заменить одной строчкой
Код
shift_reg = {shift_reg[6:0],shift_reg[7]};


А не симулируется потому что активный уровень rst - 0 а не 1
Код
if (!rst) begin shift_reg <= 8'b00000000; end


Сообщение отредактировал shamray - Aug 20 2007, 19:05
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Aug 21 2007, 07:43
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(shamray @ Aug 20 2007, 22:04) *
Да, именно колцевой. Кстати, все эти присваивания можно заменить одной строчкой
Код
shift_reg = {shift_reg[6:0],shift_reg[7]};


А не симулируется потому что активный уровень rst - 0 а не 1
Код
if (!rst) begin shift_reg <= 8'b00000000; end


Этот парень прав на 100% cool.gif
Go to the top of the page
 
+Quote Post

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

 


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


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