Thông báo

Collapse
No announcement yet.

Cần góp ý về đoạn code Verilog sau đây-mô phỏng trên kit DE2

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

  • #16
    Trở lại clock enable cho "dem", "dem" chỉ tăng khi clock enable = '1'. Chẳng hạn khi key[0] hoặc key[1] được nhấn xuống, set clock enable = '1' để bắt đầu đếm, và khi đếm = X, reset clock enable = '0' để ngưng đếm. Theo như template bên trên:

    Code:
    always @ (posedge clk)
      if (dem == X)
        dem_clock_enable = 1'b0;
      else
        if (key[0] = 1'b1 or key[1] = 1'b1)
          dem_clock_enable = 1'b1;

    Nếu chúng ta muốn đếm chỉ khi clock enable = '1', và reset đếm thành 0 khi đếm bằng X, chúng ta cũng code theo template:

    Code:
    always @ (posedge clk)
      if (dem == X)
        dem = 0;
      else
        if (dem_clock_enable = 1'b1)
          dem  = dem  + 1;

    Nếu bạn chỉ muốn bắt đầu đếm sau khi key đã được nhấn và buông ra, bạn cần phải tìm falling edge của key (synchronously), và sau đó dùng falling edge của key để tác động lên clock enable:

    Code:
    always @ (posedge clk)
      if (dem == X)
        dem_clock_enable = 1'b0;
      else
        if (key_falling_edge[0] = 1'b1 or key_falling_edge[1] = 1'b1)
          dem_clock_enable = 1'b1;
    Một cách thường được dùng để tìm falling edge (hoặc rising edge) là delay signal 1 clock cycle. Dựa vào sự khác biệt giữa signal với no delay và signal delayed 1 clock cycle, chúng ta có thể biết khi nào key_falling_edge nên được set thành '1'.

    key_no_delay:000011110000
    key_delay_01:000001111000
    falling_edge:000000000100


    Dùng "always @(negedge KEY[0] or negedge KEY[1])" is not recommended.


    Một vấn đề khác nữa là bạn nhấn và sau đó buông key. Khi key[X] = '1', bạn cần save giá trị của X để sau đó bạn có thể biết key nào đã được nhấn, và display những giá trị tương ứng ra LED.

    Comment


    • #17
      Nguyên văn bởi nemesis21 Xem bài viết
      Trở lại clock enable cho "dem", "dem" chỉ tăng khi clock enable = '1'. Chẳng hạn khi key[0] hoặc key[1] được nhấn xuống, set clock enable = '1' để bắt đầu đếm, và khi đếm = X, reset clock enable = '0' để ngưng đếm. Theo như template bên trên:

      Code:
      always @ (posedge clk)
        if (dem == X)
          dem_clock_enable = 1'b0;
        else
          if (key[0] = 1'b1 or key[1] = 1'b1)
            dem_clock_enable = 1'b1;

      Nếu chúng ta muốn đếm chỉ khi clock enable = '1', và reset đếm thành 0 khi đếm bằng X, chúng ta cũng code theo template:

      Code:
      always @ (posedge clk)
        if (dem == X)
          dem = 0;
        else
          if (dem_clock_enable = 1'b1)
            dem  = dem  + 1;

      Nếu bạn chỉ muốn bắt đầu đếm sau khi key đã được nhấn và buông ra, bạn cần phải tìm falling edge của key (synchronously), và sau đó dùng falling edge của key để tác động lên clock enable:

      Code:
      always @ (posedge clk)
        if (dem == X)
          dem_clock_enable = 1'b0;
        else
          if (key_falling_edge[0] = 1'b1 or key_falling_edge[1] = 1'b1)
            dem_clock_enable = 1'b1;
      Một cách thường được dùng để tìm falling edge (hoặc rising edge) là delay signal 1 clock cycle. Dựa vào sự khác biệt giữa signal với no delay và signal delayed 1 clock cycle, chúng ta có thể biết khi nào key_falling_edge nên được set thành '1'.

      key_no_delay:000011110000
      key_delay_01:000001111000
      falling_edge:000000000100


      Dùng "always @(negedge KEY[0] or negedge KEY[1])" is not recommended.


      Một vấn đề khác nữa là bạn nhấn và sau đó buông key. Khi key[X] = '1', bạn cần save giá trị của X để sau đó bạn có thể biết key nào đã được nhấn, và display những giá trị tương ứng ra LED.
      Cảm ơn memsis đã tận tình giúp đỡ!!Mình sẽ test thử rùi sẽ post kết quả lên sau!

      Comment


      • #18
        Nhờ anh NEO chỉ giáo thêm và ap dụng mấy doạn code memsis chỉ giáo mình đã viết dc đoạn này rùi!!Thank 2 người nhiều lắm!!
        Last edited by achilles86; 06-05-2009, 23:18.

        Comment

        Về tác giả

        Collapse

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

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

        Collapse

        Đang tải...
        X