2013-01-21 1 views
2

15 초 이내에 임의의 시간에 LED가 켜져 있어야합니다. 예를 들어 버튼을 누른 후 4 초 또는 7 초 후 임의로 켜져 야합니다.주어진 시간 내에 임의의 숫자를 선택하는 방법은 무엇입니까?

나는 15 초 지연을 생성하는 코드를 생각해 냈지만,이 사이의 임의의 시간을 선택하는 방법을 찾아 낼 수 없다.

always @ (posedge clock or posedge reset) 
begin 
if(reset) 

    ticker <= 0; 

else if(ticker == 750000000) //if it reaches the desired max value that equates 15 second reset it 
    ticker <= 0; 
else if(start) //only start if the input is set high 
    ticker <= ticker + 1; 
end 

assign click = ((ticker == 750000000)?1'b1:1'b0); //click to be assigned high every 0.1 second 

는 또한 나는 합성 솔루션을 원하십시오

다음은 15 초 지연에 대한 내 코드입니다.

+0

http://en.wikipedia.org/wiki/Linear_feedback_shift_register – e19293001

답변

2

난수를 생성하려면 하드웨어 방법이 필요합니다. 시뮬레이션에는 $ random이 있지만 하드웨어는 아닙니다.

나는 실행하고 버튼을 누를 때, 당신은 당신이 카운트 현재 값을 캡처하거나 카운터를 미리 설정하고 임의의 숫자를해야 할 경우 0

+0

고맙습니다. 필자는 권고대로 LFSR을 조사해 왔으며 탭을 선택하면 크게 혼란 스럽습니다. 어느 피드백 비트가 사용되어야하는지 결정하는 것은 무엇입니까? 또한 일관된 예제를 찾을 수 있습니다. 감사합니다 – ipunished

+1

다른 질문을 시작하는 것이 가장 좋을 수 있습니다. 원하는 난수의 수 (피드백 조건)를 결정하거나 난수의 너비 (비트)를 결정해야합니다. 예제 [Verilog lfsr] (https://github.com/rcastle/verilog_lfsr/blob/master/fibonacci_lfsr.v) [선택 탭] (http://www.ece.cmu.edu/~koopman/lfsr/) index.html)는 최대 LFSR을 가지고 있는지 확인하십시오. – Morgan

+0

감사. 난 이걸로 30 비트 폭의 의사 랜덤 번호가 필요해. 반복하기 전에 무작위 용어의 수를 신경 쓰지 마라. 나는 당신이 게시 한 링크를 이해하려고 노력했다. 나는''값 당 반복 ""이 반복되기 전에 난수를 보여주고 있음을 이해한다. 내가 맞습니까? 그러나 시작과 끝 값은 무엇입니까? 탭 배열은 보이지 않으므로. 탭 배열을 사용하고 도망 갈 수 있습니까? 감사합니다. – ipunished

2

카운트 다운 LFSR을 만드는 제안 하드웨어에서 선형 피드백 시프트 레지스터 (LFSR) 회로를 사용하여 의사 난수를 생성 할 수 있습니다.

LFSR은 쉽게 구현할 수 있으며 온라인으로 많은 예제를 찾을 수 있습니다.

단추 누름을 얻으면 LFSR의 현재 값을 레지스터로 캡처 할 수 있습니다 (응용 프로그램에 따라 확장해야 할 수도 있음). LED를 켤 때까지이 값을 사용하여 초를 계산합니다.

+0

고마워요. 필자는 권고대로 LFSR을 조사해 왔으며 탭을 선택하면 크게 혼란 스럽습니다. 어느 피드백 비트가 사용되어야하는지 결정하는 것은 무엇입니까? 감사 – ipunished

관련 문제