Thông báo

Collapse
No announcement yet.

Mô phỏng ModelSim được nhưng đổ trên kit không như ý muốn

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

  • #16
    Nguyên văn bởi danbeo85 Xem bài viết
    Hi strangepheno,

    Bạn có thể cho mình biết giá trị dữ liệu và địa chỉ bạn dùng trong quá trình ghi là như thế nào và kết quả đọc ra sao không?

    ^_^
    Chào annh,
    Như anh đã biết để ghi dữ liệu vào 1 RAM ta cầu 3 yếu tố: data, address và cạnh lên của xung clock. Data được em đưa vào kit De0 thông qua port của MCU. Address để tiết kiệm port em đã thiết kế 1 khối như khối counter - đếm lên mỗi khi có cạnh xuống của MCUstrobe. Xung strobe này cũng được dùng làm write clock cho RAM. Ngoài ra, MCU còn điều khiển tín hiệu reset bộ đếm address để cho việc thực hiện ghi RAM.

    Như vậy, hoạt động của hệ thống của em gồm có. Tại cạnh xuống của MCUstrobe, giá trị address được tăng lên 1 đơn vị và đưa đến RAM cùng với tín hiệu data. Tại cạnh lên của xung strobe, data sẽ được ghi vào address tại cạnh xuống ban nãy.

    Em đổ mô phỏng được kết quả như mong muốn và tiến hành đổ lên kit nhưng thực tế các data được ghi vào 1 cách ngẫu nhiên, không theo sự kiểm soát của em. Sau đó em dùng Signal Tap để kiểm tra. Em đặt probe tại address out của khối counter, address in của RAM và Clock in của RAM (em muốn kiểm tra xem address có được đưa đến RAM đúng theo yêu cầu hay không). Em thu được kết quả 2 tín hiệu address tại probe giống nhau và tăng lên khi có cạnh xuống của strobe - đúng theo như mong muốn đồng thời trên kit kết quả cũng theo như ý muốn của em.

    Em disable file Signal Tap và đổ lên kit theo kiểu thông thường (tool -> Programing) thì kết quả vẫn không như mong đợi như ban đầu.

    Thân chào.

    Comment


    • #17
      Nguyên văn bởi strangepheno Xem bài viết
      Cám ơn anh về tài liệu. Em đã đọc và hiểu thêm 1 số vấn đề về clock. Tài liệu anh đưa hình như chưa hoàn chỉnh thì phải? Em đọc thấy thiếu vài hình và phần sau.

      Cho em hỏi vì sao ta có thể biết được các thời gian truyền mà tính toán và thiết lập cho thích hợp được vậy anh. Vd em dùng 1 đường bus để kết nối từ MCU và FPGA, em làm sao biết được tín hiệu truyền trên đường bus đó mất thời gian bao lâu để tính tần số cho phù hợp được vậy anh?

      Thiết lập contraint anh nói có phải là dùng file.sdc không anh?
      Tài liệu mình viết chưa hoàn chỉnh, bạn hiểu sơ sơ khái niệm rồi tra cứu thêm các tài liệu của Xilinx và Altera, người ta có đủ.

      Thiết lập constraint là dùng file SDC.
      Bạn mở chương trình TimeQuest sau khi compile 1 lần và thiết lập các constraint.

      Nếu bus của bạn chạy tốc độ cao ~ 100MHz. Lấy ví dụ kết nối MCU tời FPGA của bạn. Bạn cần phải làm như sau:

      - Đường truyền từ MCU tới FPGA.
      1) Bạn mở datasheet của MCU sẽ thấy có thông số delay cua Data và Address so với clock (Tcko - clock to output valid)
      2) Khi thiết kế board in-house, sẽ có chương trình mô phỏng, tính được trễ tín hiệu của bus (gọi là fly-time). Còn không có, bạn cho giá trị 1-2ns là được
      Last edited by jefflieu; 23-04-2013, 18:45.

      Comment


      • #18
        Bus của ban châm thì chưa cần constraint gì đâu.
        Danbeo85 nói đúng đó, bạn đang gặp vấn đề về thiết kế. Bạn nên code lại mạch đơn giản, dùng clock @ (posedge clock) cho đúng, chứ không phải @( ... or ...) toàn sinh ra mạch latch ...
        bạn làm đơn giản thôi

        1) Lo chỗ interface trước
        @(posedge strobe)
        reg_output <= address;//hoặc data
        Xuất output ra LED
        2) @(posedge strobe)
        address <= address + 1;
        xuất address ra các LED.

        Bạn dùng code C điều khiển công strobe của MCU ...
        ...

        Comment


        • #19
          Hi strangepheno,

          Theo như mô tả thiết kế của bạn thì bạn có thể làm cách sau:
          1) Công việc đầu tiên là đệm lại dữ liệu thông qua tín hiệu strobe
          reg [7 : 0] data_reg; // Ví dụ như data của bạn là 8 bit
          reg write_reg; // Lệnh write = 1 là ghi
          always @(posedge strobe, negedge reset_n) // nên có tín hiệu reset_n ( = 0 là tích cực) để khởi tạo các giá trị thanh ghi về 0 hay một giá trị nào đó mà bạn muốn
          begin
          if (reset_n == 1'b0)
          begin
          data_reg <= 8'd0;
          write_reg <= 1'b0;
          end
          else
          begin
          data_reg <= data_in;
          write_reg <= write_in;
          end
          end
          2) Sau khi đã đệm dữ liệu và lệnh write lại rồi thì điều khiển address tương tự như jefflieu đã gợi ý ở phần trên. Nhưng lưu ý: giá trị của address chỉ thay đổi khi có lệnh write. Do đó bạn nên dùng write_reg làm tín hiệu cho phép address counter hoạt động.

          3) Như jefflieu đã nói như trên, bạn nên kiểm tra bằng led với từng lệnh ghi đơn, dùng switch như một tín hiệu chọn address hay data_reg được xuất ra led.

          Bạn thử làm như thế xem có vấn đề gì nữa hay không?

          Chúc bạn thành công,
          ^_^

          Comment


          • #20
            Hi strangepheno,

            Do các ký tự khoảng trắng bị xóa đi trong lúc gửi bài trả lời bên code mình viết trông không được tốt. Khi bạn soạn thảo các bạn nên để ý với "coding style" nha.

            ^_^

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            • 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 nay, 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 nay, 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 nay, 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...
              Hôm qua, 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...
              Hôm qua, 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
            • dinhthuong80
              Trả lời cho Tiếng Anh cho người Việt
              bởi dinhthuong80
              Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

              Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
              20-02-2025, 11:52
            • vi van pham
              Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
              bởi vi van pham
              Uống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?

              Cái khó bó cái...
              19-02-2025, 23:05
            • nhathung1101
              Trả lời cho Tiếng Anh cho người Việt
              bởi nhathung1101
              Nếu chú tâm thì học tiếng Việt cũng đủ rồi, thừa sức làm việc rồi.

              Học tiếng Anh cũng chỉ phụ trợ để đọc thêm tài liệu, hướng dẫn.

              Nhưng có hiểu điều đó không mới là vấn đề. Khi mà học ngoại ngữ để đi đạp xích lô đón khách???...
              19-02-2025, 21:27
            Đang tải...
            X