2017-03-08 1 views
-2

클럭 로직에서 3 개의 신호를 생성하려고합니다. 3 신호가있는 카운터

8s 
7s ----- create working signal 
6s 
5s 
4s 
3s 
2s 
1s ----- create timeout signal 
0s ----- create finish signal 

always @(posedge CLK_1K or posedge signal_count) begin 
    slot_count = 0; 
    data_finish = 0; 
    timeout = 0; 
    working = 0; 
    if (signal_count) begin 
     slot_count <= 1; 
     counter <= 8; 
    end else if (counter > 0) begin 
     counter = counter - 1; 
     if (counter == 7) begin 
      working = 1; 
     end else if (counter == 1) begin 
      timeout = 1; 
     end else if(counter == 0) begin 
      data_finish = 1; 
     end 
    end 
end 

가 한 일 : 시뮬레이터

  • 테스트가 정상입니다. 작동하지 장치에
  • 다운로드 ...
  • 난 다음에 어떻게해야

? 고마워 ....

+1

좀 더 구체적으로 알려주시겠습니까? 코드가 시뮬레이션에서는 작동 하나 장치에서는 작동하지 않습니까? 또는 합성 오류가 발생합니까? –

답변

1

우선 코딩 피드백. 차단 및 비 차단 할당을 혼합하지 마십시오. 당신은 완전히 할 수 있지만, 일이 혼란 스러울 수 있습니다. 귀하의 경우에는 counter이 비 차단 (< =)으로 할당 된 다음 차단 (=)으로 할당되어 있습니다. 나는 당신이 모든 것을 막을 수 있다고 생각하고 있습니다.

나는 아주 간단한 질문을 할 것이다. 시계 이름은 1K를 나타내며 1KHz가 될 수 있습니다. 출력이 작동하지 않는다는 것을 알기 위해 출력을 "측정"하고 있습니까? 1K에서 조명이 깜박이지 않을 수도 있습니다 ... O- 스코프 또는 LA가 있고 작동하지 않는다고 판단되면 다음에 할 일을 진행할 것입니다.

counter의 넓이를 확인 하시겠습니까? 적어도 4 비트 너비입니까? 더 좋을거야.

게시판에서 다음을 확인하십시오. o 범위가있는 경우 입력 클럭이 실제로 실행 중인지 확인하십시오. 다음으로 합성 PIN 할당 파일을 확인하십시오. 시계를 장치의 오른쪽 핀에 지정했는지 확인하십시오.

다음으로 signal_count가 효과적으로 디자인 재설정됩니다. 리셋 (signal_count)이 올바른 핀에 할당되고 버튼을 누를 때 실제로 움직이는 지 확인해야합니다.

그런 다음 실제로 장치를 올바르게 프로그래밍하고 있는지 확인하십시오. done 핀이 있습니까? 문제를 일으키는 단계, 당신은 작동하는 누군가가 elses 디자인을 가지고 있습니까? 자신의 보드가 아닌 보드에서 작동하는 경우 하드웨어를 의심하거나 점퍼 또는 전원 공급 장치가 누락 된 것일 수 있습니다.

마지막으로 새 프로그램을 만듭니다. 아래와 같이 매우 간단하게 만드십시오.
해당 oscope를 꺼내고 작동 신호가 예상대로 진동하는지 확인하십시오. working의 초기 상태는 정의되지 않았으므로 실제 보드에서는 1/2 주파수로 발진해야하기 때문에 이것은 쓰여진대로 시뮬레이션되지 않습니다. 만약 그렇다면 시계가 있다는 것을 알고 있습니다. IT가 진동하지 못하는 경우

always @ (posedge CLK_1K) 
begin 
    working <= ~working; 
end 

assign working = 1'b1 

에게 프로그램을 변경하고, 신호 장치가로드 될 때 하이가 확인. 이 문제가 많은 등 나쁜 핀 할당, 나쁜 핀, 나쁜 공급, 같은 소스,하지만 뭔가 ...하지하지 않는 경우

그런 다음 다음

always @ (posedge CLK_1K) 
begin 
    working <= signal_count ? ~working : 1'b0; 
end 

이 뜻에 변경 신호 수가 작동하고 있음을 증명하는 진동을 멈추십시오.

이 테스트의 결과에 응답하고 거기에서부터 시도 할 것입니다.