Thông báo

Collapse
No announcement yet.

trễ khi mô phỏng timing

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

  • trễ khi mô phỏng timing

    Cho mình hỏi tại sao khi mình mô phỏng timing trong quatus thì lại xảy ra trễ giữa tín hiệu vào và tín hiệu ra.Và trễ này la do những nguyên nhân nào???

    2.Theo mình được biết thì khi sử dụng 1 signal bên trong process thi khi thực hiện hết process đó thi signal mới được thực thi(điều này khác với variable).Vậy thì sẽ mất khoảng bao lâu để thực hiện xong process này.Các process khác nhau thì có thời gian thực hiện là như nhau hay khác nhau.
    Mong được giải đáp.Thân!!

  • #2
    Nguyên văn bởi nam_bkfet Xem bài viết
    Cho mình hỏi tại sao khi mình mô phỏng timing trong quatus thì lại xảy ra trễ giữa tín hiệu vào và tín hiệu ra.Và trễ này la do những nguyên nhân nào???
    Khi mô phỏng, trễ đó được tạo ra do người viết code . Trễ đó bắt chước phần cứng thật. Phần cứng thật có trễ là do điện tích ở đầu ra di chuyển chậm hơn điện tích ở đầu vào của mạch điện.
    Bạn có thể tìm hiểu thêm về 2 loại trễ và cách mô phỏng chúng: inertial delay (trễ quán tính) và transport delay (trễ vận chuyển).


    2.Theo mình được biết thì khi sử dụng 1 signal bên trong process thi khi thực hiện hết process đó thi signal mới được thực thi(điều này khác với variable).Vậy thì sẽ mất khoảng bao lâu để thực hiện xong process này.Các process khác nhau thì có thời gian thực hiện là như nhau hay khác nhau.
    Mong được giải đáp.Thân!!
    Khái niệm thời gian trong process là khái niệm "ảo". Không phải thời gian thật nên ko nói được 1 process mất bao lâu để thực hiện.

    process(clk)
    begin
    if(rising_edge(clk)) then
    a1 <= b1;
    a2 <= b2;
    end if;
    end process;

    câu lệnh 1 sẽ được thực hiện "trước" câu lệnh 2, "trước" ở đây là chương trình mô phỏng thực hiện trước. Khi tạo thành phần cứng thật, 2 thanh ghi a1 và a2 sẽ thay đổi thời gian cùng lúc ngay tại sườn lên của clock.

    process(clk)
    begin
    if(rising_edge(clk)) then
    a1 <= b1;
    if(cond='1') then a1 <= b2; end if; //A1 ko phai a2
    end if;

    Trong trường hợp này: nếu cond == 1 thì câu lệnh thứ 2 sẽ được thực hiện sau câu lệnh thứ 1, như vậy a1 sẽ có giá trị của b2. Nói cách khác, tại cùng 1 sườn của clock, câu lệnh 1 thực hiện trước, câu lệnh 2 viết đè lên a1 với giá trị b2.

    Process trên sẽ tạo ra 1 thanh ghi a1, ở cổng vào của thanh ghi a1 là 1 multiplexer, có 2 input : b1 và b2. multiplexer này điểu khiển bởi tín hiệu cond: cond = 1 thì b2 sẽ vào
    thanh ghi, cond = 0 thì b1 sẽ vào thanh ghi.

    Đây là khái niệm quan trọng, bạn nên học kĩ. VHDL ko phải lập trình, mà là mô tả phần cứng.

    Comment


    • #3
      process(clk)
      begin
      if(rising_edge(clk)) then
      b2 <= b1;
      a1 <= b2;
      end if;
      end process;
      Cái này tạo ra 2 thanh ghi, a1 và b2 nối tiếp nhau.

      process(clk)
      variable b2: std_logic;
      begin
      if(rising_edge(clk)) then
      b2 := b1 and c1;
      a1 <= b2;
      end if;
      end process;
      Cái này tạo ra 1 thanh ghi a1, b2 là đầu ra của cổng and. Thay vì viết như vậy, mình chỉ toàn dùng signal thôi, hiếm khi dùng variable

      signal b2: std_logic;
      process(clk)
      begin
      if(rising_edge(clk)) then
      a1 <= b2;
      end if;
      end process;
      b2 <= b1 and c1;
      Các sách hay giải thích là tín hiệu thì cuối process mới thực hiện :-s. Mình nghĩ hiểu mạch điện trước rồi học VHDL thì dễ hơn.

      Comment


      • #4
        bạn có thể nói cho mình rõ hơn về "thời gian ảo" trong process được ko.thanks so much!!!
        Nếu mình có 1 đoạn code như sau:

        signal a,b,c:std_logic;
        process(clk)
        if(rising_edge(clk)) then
        b<=a;
        c<=b;
        end if;
        end process;

        Comment


        • #5
          Nguyên văn bởi nam_bkfet Xem bài viết
          bạn có thể nói cho mình rõ hơn về "thời gian ảo" trong process được ko.thanks so much!!!
          Nếu mình có 1 đoạn code như sau:

          signal a,b,c:std_logic;
          process(clk)
          if(rising_edge(clk)) then
          b<=a;
          c<=b;
          end if;
          end process;
          Sẽ có 2 chương trình đọc code của ban:
          - Chương trình tổng hợp (synthesis tool). Chương trình này sẽ dịch ra 2 thanh ghi, b và c. Vì đó là cách mô tả một D-flipflop. Chương trình tổng hợp làm theo kiểu template. Nó sẽ có sẵn các định dạng trong library, và sẽ khớp code bạn viết vào library để hiểu xem bạn muốn mô tả cái gì.

          - Chương trình mô phỏng. Chương trình mô phỏng phải mô phỏng sao cho có kết quả đúng như mạch điện được tổng hợp. Nó sẽ chạy như sau: Ngay khi phát hiên được clock thay đổi (vì clk nằm trong sensitivity list) nó sẽ chạy process này. Nếu đúng là clock đang lên, nó sẽ thực hiện các statement b<= a và c <= b cùng một lúc nhưng mà là từ trên xuống dưới.
          ++++ cùng một lúc: nghĩa là b và c sẽ thay đổi giá trị cùng 1 lúc ngay tại sườn lên của clock
          ++++ từ trên xuống dưới: các statement trong process là tuần tự, được mô phỏng từ trên xuống dưới.

          Do đó không có khái niệm thời gian của process. Process sẽ được kích hoạt khi các tín hiệu trong sensitivity list thay đổi giá trị và thực hiện 1 lần rồi nằm chờ.

          Bạn thấy gì ko hợp lý thì cứ hỏi tiếp hoặc lấy ví dụ để làm rõ thêm

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • tuyennhan
            Trả lời cho Tiếng Anh cho người Việt
            bởi tuyennhan
            Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
            Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
            hôm nay, 07:44
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Cám ơn những lời chúc tốt đẹp của em.

            Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

            Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
            hôm nay, 02:00
          • nhathung1101
            Trả lời cho Tiếng Anh cho người Việt
            bởi nhathung1101
            Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

            Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

            Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
            Hôm qua, 22:18
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

            Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
            Hôm qua, 14:51
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

            Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
            Hôm qua, 14:39
          • dinhthuong80
            Trả lời cho Tiếng Anh cho người Việt
            bởi dinhthuong80
            Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

            Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
            Hôm qua, 14:28
          • bqviet
            Trả lời cho Tiếng Anh cho người Việt
            bởi bqviet
            Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
            21-02-2025, 20:26
          • mèomướp
            Trả lời cho Tiếng Anh cho người Việt
            bởi mèomướp
            Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
            21-02-2025, 12:32
          • vi van pham
            Trả lời cho Tiếng Anh cho người Việt
            bởi vi van pham
            Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

            Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
            20-02-2025, 21:31
          • bqviet
            Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
            bởi bqviet
            Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
            20-02-2025, 17:22
          Đang tải...
          X