Thông báo

Collapse
No announcement yet.

giúp em gán tín hiệu với after trong VHDL

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

  • giúp em gán tín hiệu với after trong VHDL

    Chào các bác.
    Em đang học VHDL và đang gặp phải vấn đề là: có một tín hiệu clock (T=100us) và em muốn đưa ra một tín hiệu có T=100us nhưng trế so với clock là 30us.
    - Chương trình em viết như sau:
    -------------------------------------
    entity thacmac is
    port (i:in bit; o: out bit);
    end thacmac;
    architecture flow of thacmac is
    begin
    o <= i after 30 us;
    end flow;
    -------------------------------------
    - Mô phỏng giản đồ thời gian - gửi file đính : (tạm gán device là EPF10K10LC84-3)
    => em thấy i,o vẫn giống nhau.

    Các bác có thể chỉ cho em vấn đề này là tại sao không, và phải tìm hiểu phần nào liên quan với nó

    Cám ơn các bác đã đọc!
    Attached Files

  • #2
    To anhtt2005, bác thử chương trình như sau nhé:


    process(i)
    begin
    if(i='1' and i`event) then
    o<=transport '1' after 30us;
    end if;
    if (i='0' and i`event) then
    o<= transport '0' after 30 us;
    end if;
    end process;

    Comment


    • #3
      Bác daihang86 ơi ,

      process(i)
      begin
      if(i='1' and i'event) then
      o<= transport '1' after 30us;
      end if;
      if (i='0' and i'event) then -- lỗi cannot synthesize
      o<= transport '0' after 30 us;
      end if;
      end process;

      Khi em compile thì nó báo lỗi như sau: "cannot synthesize logic for o because its value changes on both rising and falling clock edges" ở dòng em đánh dấu đó.Em đã cố rồi mà không sửa được lỗi đó.
      Em nghĩ là khi xây dựng process như vậy thì nó sẽ được thực hiện khi tín hiệu i thay đổi trạng thái (tức là có event) do đó có thể bỏ thuộc tính event trong điều kiện if được không. Bác cũng cho em hỏi là (i='1' and i'event) trong process đó có thể xem là rising_edge và (i='0' and i'vent) là falling_edge được không.

      Xin mọi người chỉ giúp thêm

      Comment


      • #4
        Nguyên văn bởi anhtt2005
        Chào các bác.
        Em đang học VHDL và đang gặp phải vấn đề là: có một tín hiệu clock (T=100us) và em muốn đưa ra một tín hiệu có T=100us nhưng trế so với clock là 30us.
        - Chương trình em viết như sau:
        -------------------------------------
        entity thacmac is
        port (i:in bit; o: out bit);
        end thacmac;
        architecture flow of thacmac is
        begin
        o <= i after 30 us;
        end flow;
        -------------------------------------
        - Mô phỏng giản đồ thời gian - gửi file đính : (tạm gán device là EPF10K10LC84-3)
        => em thấy i,o vẫn giống nhau.

        Các bác có thể chỉ cho em vấn đề này là tại sao không, và phải tìm hiểu phần nào liên quan với nó

        Cám ơn các bác đã đọc!
        Viết vậy là được rồi,không có sai,mô phỏng như vậy cũng lạ,lẽ ra phải chạy đúng chứ,thử dùng modelsim xem sao.
        à quên nữa,flex10k của altera,chắc bác đang dùng maxplus,tôi không dùng phần mềm này nhưng cũng thử qua rồi,khi mô phỏng nó có hai chế độ,một là mô phỏng chức năng,hai là mô phỏng có chức năng & time,có khi bác chỉ mô phỏng chức năng mà không cho mô phỏng có time nên mới bị như vậy.thử lại xem sao.

        Comment


        • #5
          Nguyên văn bởi TheKing
          à quên nữa,flex10k của altera,chắc bác đang dùng maxplus,tôi không dùng phần mềm này nhưng cũng thử qua rồi,khi mô phỏng nó có hai chế độ,một là mô phỏng chức năng,hai là mô phỏng có chức năng & time,có khi bác chỉ mô phỏng chức năng mà không cho mô phỏng có time nên mới bị như vậy.
          Em dùng QuartusII 5.0 bản down miễn phí trên mạng. Trong phần setting đã đặt simulation mode là Timing.

          Comment


          • #6
            Bạn test lại xem. Mình test thử bằng Modelsim thì ra kết quả okie.


            Comment


            • #7
              hịc, hình như trong Quartus mô phỏng ra khác kết quả so với modelsim ? To bác yesme@ bác thử mô phỏng bằng cả hai xem có khác không. hịc hịc

              Comment


              • #8
                Mình không có chương trình Quartus ở trên máy, chỉ dùng Modelsim thôi. Bạn kiểm tra lại đi !


                Comment


                • #9
                  chào anh Yesme@ em đang muốn nghiên cứu và phải làm đồ án về FPGA. anh có thể cho em địa chỉ mail để trao đổi được không ạ?
                  Thanks.
                  how to begin with Embedded system???

                  Comment


                  • #10
                    transport delay

                    Nguyên văn bởi TheKing Xem bài viết
                    Viết vậy là được rồi,không có sai
                    Em thấy viết như vậy về syntax thì không sai. Nhưng không synthesis được, em dùng ISE Webpack 8.2i nó báo là "bad synchronous description"
                    Còn khi em chỉ dùng 1 câu lệnh là :o <= transport i after 30 us
                    thì synthesis ok và mô phỏng cũng vậy.

                    Comment


                    • #11
                      Theo Tí thì mệnh đề after chỉ có thể dùng trong mô phỏng thôi, không thể synthesis được đâu. Việc synthesis một thiết kế có thể được hiểu là chuyển thiết kế đó sang dạng mô tả cấu trúc phần cứng. Hiện nay không có phần mềm nào có thể tự động xây dựng một cấu trúc phần cứng với delay xác định được. Vì delay trong cấu trúc FPGA là do đặc tính của vi mạch FPGA đang dùng quyết định.
                      Coi chừng mấy anh hiểu nhầm compile với synthesis đó. Compile là một bước để simulation
                      Hì, nếu Tí nói có sai sót thì mong lượng thứ.
                      Làm cái gì nữa đây?

                      Comment


                      • #12
                        theo minh biet thi Quartus ko ho tro de viet testbench do đó những cau lenh lien quan den timing thì ko dc sủ dung hoặc bị bỏ qua khi compile (bao gồm các bước synthesis, Fitting và Timing analyze). để simulation thì phải tạo ra file waveform, ban se define các ngõ vào, sau quá trình simulation sẽ thấy được kết quả ngõ ra.

                        Comment


                        • #13
                          Mình đồng ý với "tí teo". Cách viết VHDL trong đó sử dụng nonzero delay value trong các phép gán (ví dụ, AFTER) được sử dụng để mô tả cách hành xử của mạch (behavioral description). Với behavior description thì bạn chỉ có thể thực hiện mô phỏng để kiểm chứng chức năng của mạch chứ không thể thực hiện synthesis vì không có CAD tools nào hỗ trợ synthesis ở mức behavior.
                          Thông thường để thiết kế một hệ thống synthesisable thì bạn phải thiết kế ở mức RTL trở xuống.


                          Comment


                          • #14
                            có bạn nào có tài liệu phần bài tập về VHDL tiếng Việt không cho mình với,mình đang lúc kiểm tra ở trường mà vẫn chưa hiểu về nó lắm ,thanks

                            Comment


                            • #15
                              Mình thấy là nên học kĩ về digital design bang Schematics truoc khi hoc VHDL ... khi các bạn thông thạo schematic roi học VHDL se rat dễ dàng ...

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X