Thông báo

Collapse
No announcement yet.

Thiết kế cổng COM (UART) bằng Verilog

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

  • #16
    Extend khối TX để gửi 2 bytes

    Nguyên văn bởi quachtinh83 Xem bài viết
    Một bye thì truyền khá dễ rồi. Giờ em muốn truyền số liệu từ FPGA vào máy tính và số liệu của em là 2 byte. Mong bác chỉ giáo giúp.
    Vì tôi có bài sẵn về khối TX trước đây cho nên để giản tiện trong vấn đề giải thích về cách thay đổi để gửi 2 bytes như bạn quachtinh đã đề cập. Tôi sửa lại cái state machine để đặt thêm 3 states nữa cho byte thứ nhì. Code tôi sửa lại cho vấn đề đó ở dưới đây. Tôi chưa chạy thử, hy vọng các bạn giúp để thử giùm.

    Code:
    module uart_tx (
      clk, reset, tx_tick, tx_rdy, tx_reg1, tx_reg2, tx_done_o, tx_sdata_o
    );
      input clk;
      input reset;
      input tx_tick;
      input tx_rdy;
      input [7:0] tx_reg;
      output tx_done_o;
      output tx_sdata_o;
    
      parameter IDLE = 6'b000001, START1 = 6'b000010, DATA1 = 6'b000100;
      parameter STOP1 = 6'b001000, START2 = 6'b010000, DATA2 = 6'b100000;
      
      reg [5:0] st;
      reg tx_done, tx_sdata;
      reg [2:0] cnt;
      
      assign tx_done_o = tx_done;
      assign tx_sdata_o = tx_sdata;
      
      always @ (posedge clk or reset) begin
        if (reset) begin
          tx_done = 1;
          st = IDLE;
          tx_sdata = 1;
        end 
        else begin
          if (tx_tick) begin
            case (st)
              IDLE: begin
                tx_sdata = 1;
                if (tx_rdy) begin
                  st = START1;
                  tx_done = 0;
                end
              end
              START1: begin
                tx_sdata = 0;
                cnt = 0;
                st = DATA1;
              end
              DATA1: begin
                tx_sdata = tx_reg1[cnt];
                if (cnt == 7)
                  st = STOP1;
                else
                  cnt = cnt + 1;
              end
              STOP1: begin
                tx_sdata = 1;
                st = START2;
              end
              START2: begin
                tx_sdata = 0;
                cnt = 0;
                st = DATA2;
              end
              DATA2: begin
                tx_sdata = tx_reg2[cnt];
                if (cnt == 7) begin
                  st = IDLE;
                  tx_done = 1;
                end 
                else
                  cnt = cnt + 1;
              end
              default : st = IDLE;
            endcase
          end
        end
      end
    endmodule
    Chúc một ngày vui vẻ
    Tony
    email : dientu_vip@yahoo.com

    Comment


    • #17
      Cho em hỏi tí
      em cần truyền và nhận 1 file từ sram của kit DE2 lên mà hình và ngược lại
      Vậy em cần thiết kế bộ uart cho kit DE2 phải không ạ?
      còn máy tính mình dùng chương trình Hyper terminal đúng không ạ?
      cảm ơn các anh đã đọc
      mong nhận được sự trợ giúp
      vì em cần gấp

      Comment


      • #18
        hix! mình đang phải truyền xuống FPGA 13 bytes đây. Hổng lẻ mình phải viết 13 cái START, 13 cái DATA, 13 cái STOP. hix. à nhân tiện. Khi mình truyền 13 byte mà lược đồ trạng thái của mình có 13 cái START, 13 cái DATA, 13 cái STOP... thì mình có phải chỉnh lại cái output [7:0] rx_reg thành [103:0] không nhỉ?

        Comment


        • #19
          về kit spartan 3E cua xilinx em muốn dùng uart làm bộ nhận data từ máy tính rồi sẽ làm một giao tiếp lấp data từ bộ đệm của uart thực hiện các giao tiếp như i2c hoặc spi... được không mọi người, hoặc giao tiếp với một mcu qua spi hoặc i2c
          trên kit spartan 3e chỉ thấy mỗi cổng com là nối được với pc(em làm giao tiếp uart mà bị trùng với mấy anh khóa trước)

          Comment

          Về tác giả

          Collapse

          tonyvandinh A high tech engineer Tìm hiểu thêm về tonyvandinh

          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