Thông báo

Collapse
No announcement yet.

Tại sao chỉ có 1 process hoạt động?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Tại sao chỉ có 1 process hoạt động?

    Dưới đây là 2 process VHDL mình viết để thực hiện việc cộng hoặc trừ 2 signal reg1, reg2 rồi hiển thị kết quả trên 8 LED. Việc tăng giảm phụ thuộc vào ấn các nút key0, key1 trên kit de1
    Nếu mình giữ nguyên câu lệnh trong comment: "--if (but(0)='0') then " trong chương trình thì chỉ có 1 process hoạt động.
    Bạn nào biết thì chỉ giúp mình với. Cảm ơn nhiều nhé.
    PHP Code:
            process (but(0), reset_N)
        
    begin
            
    if (reset_N='0'then 
                reg1 
    <= x"0";    
            
    elsif falling_edge(but(0)) ) then
                
    --if (but(0)='0'then 
                    
    if (ssw(1)='1'then reg1 <= reg1 1;
                        
    elsif (reg1>0then reg1 <= reg1 1;
                            else 
    reg1 <= x"f";
                    
    end if;
                --
    end if;
            
    end if;
        
    end process;
        
        
    process (but(1), reset_N)
        
    begin
            
    if (reset_N='0'then 
                reg2 
    <= x"0";    
            
    elsif falling_edge(but(1)) ) then
                
                
    --if (but(1)='0'then  
                    
    if (ssw(1)='1'then reg2 <= reg2 1;
                        
    elsif (reg2>0then reg2 <= reg2 1;
                            else 
    reg2 <= x"f";
                    
    end if;
                --
    end if;        

            
    end if;
        
    end process

  • #2
    Câu hỏi của bạn người khác đọc ko thể hiểu được, bạn nêu rõ hơn được ko ? Bạn nói chỉ có 1 process hoạt động, thì ai mà biết process nào hoạt động, bạn nêu rõ hơn câu hỏi nhé

    Comment


    • #3
      Nguyên văn bởi klong19 Xem bài viết
      Câu hỏi của bạn người khác đọc ko thể hiểu được, bạn nêu rõ hơn được ko ? Bạn nói chỉ có 1 process hoạt động, thì ai mà biết process nào hoạt động, bạn nêu rõ hơn câu hỏi nhé
      Oh. Cụ thể nó thế này bạn ạ.
      Dưới đây là toàn bộ ARCHITECTURE gồm 3 process của mình. Khi mình bỏ process đầu tiên thì nó chỉ chạy process số 3, nếu không bỏ thì nó chạt process số 2. Nhưng vì cái process đầu tiên mình thấy nó chả liên quan gì đến 2 cái kia nên mình mới nói chỉ có 1 process hoạt động
      but <= button (2 downto 0);
      ssw <= sw (1 downto 0);
      Cam_LED(7 downto 0) <= o_cam_led;
      o_Cam_LED(3 downto 0) <= reg1;
      o_Cam_led(7 downto 4) <= reg2;


      process (but(2), reset_N)
      begin
      if (reset_N='0') then
      data <= "0000000000000000";
      elsif ( (falling_edge(but(2))) ) then
      -- '1' address
      if (ssw(0)='1') then data(15 downto 8) <= o_cam_led;
      -- '0' values
      else data(7 downto 0) <= o_cam_led;
      end if;

      end if;
      end process;




      process (but(0), reset_N)
      begin
      if (reset_N='0') then
      reg1 <= x"0";
      elsif ( falling_edge(but(0)) ) then
      --if (but(0)='0') then
      if (ssw(1)='1') then reg1 <= reg1 + 1;
      elsif (reg1>0) then reg1 <= reg1 - 1;
      else reg1 <= x"f";
      end if;
      --end if;
      end if;
      end process;

      process (but(1), reset_N)
      begin
      if (reset_N='0') then
      reg2 <= x"0";
      elsif ( falling_edge(but(1)) ) then

      --if (but(1)='0') then
      if (ssw(1)='1') then reg2 <= reg2 + 1;
      elsif (reg2>0) then reg2 <= reg2 - 1;
      else reg2 <= x"f";
      end if;
      --end if;

      end if;
      end process;

      Comment


      • #4
        Ban đầu mình nghĩ là do "hold time" nhưng chắc không phải vì nếu mình nhấn và giữ button lâu một chút thì chắc nó phải chạy cả 2 process mới đúng. Thật sự là cái lỗi này vô cùng khó hiểu. Tuy đã sửa được lỗi nhưng nếu mình hiểu rõ về nó thì sẽ là điều vô cùng tốt nên mình post lên đây để tham khảo ý kiến của mọi người.

        Comment


        • #5
          Nguyên văn bởi tuthanno01 Xem bài viết
          Ban đầu mình nghĩ là do "hold time" nhưng chắc không phải vì nếu mình nhấn và giữ button lâu một chút thì chắc nó phải chạy cả 2 process mới đúng. Thật sự là cái lỗi này vô cùng khó hiểu. Tuy đã sửa được lỗi nhưng nếu mình hiểu rõ về nó thì sẽ là điều vô cùng tốt nên mình post lên đây để tham khảo ý kiến của mọi người.
          Đây không phải là cách tìm lỗi tốt. Bạn nên:
          1) chạy mô phỏng, xem từng tín hiệu hoạt động đúng hay không
          2) Dùng chương trình Signal Tap II của altera mà probe từng tín hiệu xem tín hiệu nào sai.

          Comment


          • #6
            Nguyên văn bởi jefflieu Xem bài viết
            Đây không phải là cách tìm lỗi tốt. Bạn nên:
            1) chạy mô phỏng, xem từng tín hiệu hoạt động đúng hay không
            2) Dùng chương trình Signal Tap II của altera mà probe từng tín hiệu xem tín hiệu nào sai.
            Cảm ơn đóng góp của bạn.
            Mình cũng đã chạy mô phỏng rồi, và nó đúng @@.
            Có thể là do phần mềm tổ hợp mạch gây ra lỗi gì đó.

            Comment


            • #7
              Nguyên văn bởi tuthanno01 Xem bài viết
              Cảm ơn đóng góp của bạn.
              Mình cũng đã chạy mô phỏng rồi, và nó đúng @@.
              Có thể là do phần mềm tổ hợp mạch gây ra lỗi gì đó.
              Ực,
              Bị gì kì vậy? Output xuất ra các chân là tín hiệu nào?
              Bạn mở thử Technology Map Schematic coi nó tổng hợp ra cái gì? Có thể nó làm gì đó bậy bạ ngoài ý muốn

              Comment


              • #8
                Nguyên văn bởi jefflieu Xem bài viết
                Bị gì kì vậy? Output xuất ra các chân là tín hiệu nào?
                Mình chỉ xuất cái CAM_LED ra led thôi.
                Mình xem qua cách nó tổ hợp thì nó có vấn đề như sau: Khi để 2 cái lệnh if trên thì ngoài các mux nó lại thêm 9 cái latch D sau mux và trước khi vào port data. Cái này mình thấy rất vô lý vì số 9 quá lẻ và trong code của mình không có phần nào liên quan đến số 9 cả

                Comment


                • #9
                  Nguyên văn bởi tuthanno01 Xem bài viết
                  Mình chỉ xuất cái CAM_LED ra led thôi.
                  Mình xem qua cách nó tổ hợp thì nó có vấn đề như sau: Khi để 2 cái lệnh if trên thì ngoài các mux nó lại thêm 9 cái latch D sau mux và trước khi vào port data. Cái này mình thấy rất vô lý vì số 9 quá lẻ và trong code của mình không có phần nào liên quan đến số 9 cả
                  Mình tổng hợp thử thì thấy nó tổng hợp bình thường! Hehe!
                  Bạn làm bậy cái gì rồi !!!

                  Comment

                  Về tác giả

                  Collapse

                  tuthanno01 Tìm hiểu thêm về tuthanno01

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X