0 / 0 / 0
Регистрация: 14.07.2014
Сообщений: 7
1

Рандомное время на ПЛИС

14.07.2014, 20:05. Показов 905. Ответов 1
Метки нет (Все метки)

Доброго времени суток.

Я делаю на ПЛИС игру "Кто быстрее" или "Проверь реакцию". Так для тренировки. Задача такая. Есть 3 кнопки:start, g_1, g_2 и 3 лампочки. После нажатия start загорается 1-ый светодиод. Причем после нажатия кнопки start светодиод должен загореться один раз случайным образом в интервале 1 сек - 10 сек. Ну а дальше, непосредственно, сама игра.

Кто-нибудь может дать совет каким образом сделать так, чтобы лампочка рандомно загоралась?

Параметры: частота 100Мгц, язык: vhdl.

P.S. Еще хотел сделать выходы на дисплей, где будет отображаться разница во времени нажатия кнопок. Каким образом можно поставить точки отсчета на временной шкале?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2014, 20:05
Ответы с готовыми решениями:

Комп перезагружается через рандомное время
Собственно, сабж. Windows XP, видеокарта встроенная и древняя (nForce 4 вроде). 1. Прогнал CureIt....

Автоматическая перезагрузка сервера в рандомное время
Нужно сделать автоматическую перезагрузку сервера в рандомные часы (6 + (0-3)). Возникла проблема...

В рандомное время компьютер просто зависает
Здравствуйте. Ситуация следующая: собрал себе ПК в начале сентября Проц: AMD FX-8300...

Userscript, обновляющий страницу через рандомное время
Я делаю пользовательский скрипт на Firefox + Greasemonkey. С яваскриптом никогда не сталкивался, но...

1
10225 / 6605 / 496
Регистрация: 28.12.2010
Сообщений: 21,159
Записей в блоге: 1
14.07.2014, 22:44 2
рандомно
Ring Oscillator, по сути автогенератор

Кликните здесь для просмотра всего текста
Код
-- less symmetric + more stable ring oscillator
genchain:
for i in 1 to 30 generate
  chain(i) <= chain(i-1);
end generate;
chain(0) <= not chain(30) or reset;
пример от Xilinx
Код
--******************************************************************************
--
--  Xilinx, Inc. 2004                 www.xilinx.com
--
--  FPGA Bitstream Copy Protection Reference Design
--
--*******************************************************************************
--
--  File name :       RND.VHD
--
--  Description :     This module generates a serial stream of random (not pseudorandom) bits
--
--  Date - revision : 04/15/2004
--
--  Author :          Catalin Baetoniu
--
--  Contact :         catalinb@xilinx.com - This design is not supported by the hotline
--
--  Disclaimer: LIMITED WARRANTY AND DISCLAMER. These designs are 
--              provided to you "as is". Xilinx and its licensors make and you 
--              receive no warranties or conditions, express, implied, 
--              statutory or otherwise, and Xilinx specifically disclaims any 
--              implied warranties of merchantability, non-infringement, or 
--              fitness for a particular purpose. Xilinx does not warrant that 
--              the functions contained in these designs will meet your 
--              requirements, or that the operation of these designs will be 
--              uninterrupted or error free, or that defects in the Designs 
--              will be corrected. Furthermore, Xilinx does not warrant or 
--              make any representations regarding use or the results of the 
--              use of the designs in terms of correctness, accuracy, 
--              reliability, or otherwise. 
--
--              LIMITATION OF LIABILITY. In no event will Xilinx or its 
--              licensors be liable for any loss of data, lost profits, cost 
--              or procurement of substitute goods or services, or for any 
--              special, incidental, consequential, or indirect damages 
--              arising from the use or operation of the designs or 
--              accompanying documentation, however caused and on any theory 
--              of liability. This limitation will apply even if Xilinx 
--              has been advised of the possibility of such damage. This 
--              limitation shall apply not-withstanding the failure of the 
--              essential purpose of any limited remedies herein. 
--
--  Copyright © 2004 Xilinx, Inc.
--  All rights reserved 
-- 
--*****************************************************************************

library IEEE;
use IEEE.std_logic_1164.all;

library unisim;
use unisim.vcomponents.all;

entity RND is
  generic(Spartan3:BOOLEAN:=FALSE);
  port(CLK:in STD_LOGIC;     -- System Clock
       O:out STD_LOGIC);     -- Random Serial Output Data
end RND;

architecture TEST of RND is
  function TO01(I:STD_LOGIC) return STD_LOGIC is
  begin
    if I='1' then
      return '1';
    else
      return '0';
    end if;
  end;

  function DIRT_RING(Spartan3:BOOLEAN;K:INTEGER) return STRING is
  begin
    if Spartan3 then
      case K is
        when 1=>return "{2;1;-4!-1;-4016;-16840;14;39;48;18;13!0;-167;144;0!0;1588;1312;24!1;-1421;-1312;4;39;49;6!2;-167;-344;0!4;167;0;4;39;48!}";
        when 2=>return "{2;1;-4!-1;-4016;-16808;14;39;48;21;13!0;-167;136;0!0;2423;-685;2!1;-2256;685;4;39;49;9!2;-167;-280;0!4;167;0;4;39;48;11!}";
        when others=>return "";
      end case;
    else
      case K is
        when 1=>return "{2;1;-6!-1;-16000;66416;14;39;160;30;13!0;-112;165;0!0;-104;368!1;216;-733;4;39;160;10!2;0;368;4;39;161;13!}";
        when 2=>return "{2;1;-6!-1;-16000;66448;14;39;160;33;13!0;-176;237;0!0;-16;240!1;192;-605;4;39;160;21!2;0;240;4;39;161;10!}";
        when others=>return "";
      end case;
    end if;
  end;

  signal RING1,RING2:STD_LOGIC:='0';
  signal cRING1,cRING2,cQ1,Q1,Q2,Q3,Q19,Q20:STD_LOGIC:='0';

  attribute s:STRING;
  attribute rloc:STRING;
  attribute bel:STRING;
  attribute syn_keep:BOOLEAN;
  attribute route:STRING;

--Synplicity bug starts - these attributes are not passed in the EDIF netlist!
--V2  attribute route of RING1:signal is "{2;1;-6!-1;-16000;66416;14;39;160;30;13!0;-112;165;0!0;-104;368!1;216;-733;4;39;160;10!2;0;368;4;39;161;13!}";
--S3  attribute route of RING1:signal is "{2;1;-4!-1;-4016;-16840;14;39;48;18;13!0;-167;144;0!0;1588;1312;24!1;-1421;-1312;4;39;49;6!2;-167;-344;0!4;167;0;4;39;48!}";
  attribute route of RING1:signal is DIRT_RING(Spartan3,1);
  attribute s of RING1:signal is "yes";
--V2  attribute route of RING2:signal is "{2;1;-6!-1;-16000;66448;14;39;160;33;13!0;-176;237;0!0;-16;240!1;192;-605;4;39;160;21!2;0;240;4;39;161;10!}";
--S3  attribute route of RING2:signal is "{2;1;-4!-1;-4016;-16808;14;39;48;21;13!0;-167;136;0!0;2423;-685;2!1;-2256;685;4;39;49;9!2;-167;-280;0!4;167;0;4;39;48;11!}";
  attribute route of RING2:signal is DIRT_RING(Spartan3,2);
  attribute s of RING2:signal is "yes";
--Synplicity bug ends
  attribute rloc of r1:label is "X0Y0";
  attribute bel of r1:label is "F";
  attribute rloc of r2:label is "X0Y0";
  attribute bel of r2:label is "G";
  attribute rloc of x4:label is "X0Y1";
  attribute bel of x4:label is "F";
  attribute rloc of sr:label is "X0Y1";
  attribute bel of sr:label is "G";
  attribute rloc of f1:label is "X0Y1";
  attribute bel of f1:label is "FFX";
  attribute rloc of f2:label is "X0Y0";
  attribute bel of f2:label is "FFX";
  attribute rloc of f3:label is "X0Y0";
  attribute bel of f3:label is "FFY";
  attribute rloc of f20:label is "X0Y1";
  attribute bel of f20:label is "FFY";
-- timing simulation values for 2VP-6  
  constant tNET1:TIME:=192 ps;
  constant tNET2:TIME:=79 ps;
  constant tILOX:TIME:=288 ps;
  constant tILOY:TIME:=313 ps;
begin
-- First Ring Oscillator
  cRING1<=transport TO01(RING1) after tNET1+tILOX-100 ps;
  r1:LUT1 generic map(INIT=>"01")
          port map(I0=>cRING1,O=>RING1);
-- Second Ring Oscillator
  cRING2<=transport TO01(RING2) after tNET2+tILOY-100 ps;
  r2:LUT1 generic map(INIT=>"01")
          port map(I0=>cRING2,O=>RING2);
-- Polynomial x**20+x**3+1 is Primitive
  x4:LUT4 generic map(INIT=>X"6996") -- XOR4
          port map(I0=>RING1,I1=>RING2,I2=>Q3,I3=>Q20,O=>cQ1);
-- This FF will go metastable very often and this is exactly what we want
  f1:FD port map(C=>CLK,D=>TO01(cQ1),Q=>Q1);
  f2:FD port map(C=>CLK,D=>Q1,Q=>Q2);
  f3:FD port map(C=>CLK,D=>Q2,Q=>Q3);
  sr:SRL16 port map(CLK=>CLK,
                    D=>Q3,
                    A0=>'1',
                    A1=>'1',
                    A2=>'1',
                    A3=>'1',
                    Q=>Q19);
  f20:FD port map(C=>CLK,D=>Q19,Q=>Q20);
-- Double Sampled Output to Remove Metastability
  O<=Q2;
end TEST;


Схемотехнически вариант может быть таков (тут смысл в том, чтобы среда не упростила при имплементации):
Рандомное время на ПЛИС


Лично я предпочитаю комбинировать генератор ПСП на основе порождающих полиномов с Ring оциллятором:
Рандомное время на ПЛИС


поставить точки отсчета на временной шкале?
моя вас не понимай. Дисплеи они все разные, смотрим как формировать/зажигать сегменты и выводим миллисекунды разницы реакции соревнующихся.
Вложения
Тип файла: pdf ACM Transaction RND.pdf (401.5 Кб, 8 просмотров)
Тип файла: pdf Schematic Editor - POLINOM-GSH.pdf (67.6 Кб, 8 просмотров)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2014, 22:44
Помогаю со студенческими работами здесь

ПЛИС
Приветствую! Поработав некоторое время с МК, меня все равно тянет в сторону ПЛИС :) Собственно и...

ПЛИС (PLD)
В этой теме обсуждаются программируемые логические интегральные микросхемы (programmable logic...

Подобрать ПЛИС
Доброго всем) Уважаемые, требуется подобрать ПЛИС. Беда в том что для меня это в обще все новое, из...

ГБШ на ПЛИС
Доброго времени суток уважаемые форумчане. Мой вопрос состоит в следующем - как можно сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru