Thông báo

Collapse
No announcement yet.

Nhận dự liệu từ cổng nối tiếp RS232 trên board FPGA

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

  • #16
    Minh dang thu truyen du lieu qua cong RS 232 xuong KIT DE2.Sau do luu du lieu vao RAM.Da ai lam chua??? xin chi giao ho.

    Comment


    • #17
      Em cũng đang làm cái truyền file qua RS232 từ PC, thực hiện trên EDK làm uP nhúng chứ ko làm cứng bằng HDL. Gửi nhận 1 character thì đc rồi nhưng file thì vẫn chưa đc. Tại em cug mới lần đầu làm trên EDK nên chưa hỉu lắm. Em làm quá trình nhận như đã làm thành công PC-to-PC, tức là vất hàm nhận XUartLite_Recv() vào trong hàm xử lý ngắt nhận nhưng debug thì chỉ toàn thấy save được byte đầu tiên của mỗi lần đọc vào SRAM.

      Bác nào quan tâm hoặc làm rồi thì cùng trao đổi nhé
      Last edited by NEO3F; 27-04-2008, 00:34.

      Comment


      • #18
        Cho minh hoi sau khi DEII nhan data tu RS232 thi viec xu li thuc hien o dau va data muon truyen ra LCD thi lam the nao?Ban nao giup minh.

        Comment


        • #19
          Nguyên văn bởi duchut Xem bài viết
          Minh dang thu truyen du lieu qua cong RS 232 xuong KIT DE2.Sau do luu du lieu vao RAM.Da ai lam chua??? xin chi giao ho.
          Uhm, mình cũng đang làm tiếp vấn đề này...Ban đầu mình test nhận data từ PC và xuất trực tiếp ra các LED. Hiện tại cũng đang tìm hiểu SRAM trên board để lưu data...Có ji trao đổi thêm qua email: tienbkit@gmail.com nha

          Nguyên văn bởi thaohoa Xem bài viết
          Cho minh hoi sau khi DEII nhan data tu RS232 thi viec xu li thuc hien o dau va data muon truyen ra LCD thi lam the nao?Ban nao giup minh.
          Nếu chỉ xuất ra LCD thì bạn có thể làm trực tiếp luôn, ko cần thiết phải dùng thiết bị lưu trữ như SRAM hay SDRAM....Việc xuất ra LCD thì mình chưa thử làm...hihi,bạn làm làm rùi thì chia sẻ cho mọi người cùng tham khảo với nhé!!!

          Comment


          • #20
            Nguyên văn bởi duchut Xem bài viết
            chu de RS232 soi noi that.Minh da lam thu tren KIT DE2 cua Artera thi thay no chay dung.Thuc ra thi moi Kit cua moi hang khac nhau thi cung co cung mot nguyen tac.Minh post code RS_receive viet bang VHDL len anh em gop y nhe.Code nay minh lay tren trang http://www.fpga4fun.com/ExternalContributions/.Phan receiver minh co chinh sua mot ty thi no chay duoc tren KIT DE2 cua Artera.
            --
            -- UART: receiver
            --
            -- Copyrighted by Wincent Balin
            -- Idea by Jean P. Nicolle
            --

            library ieee;
            use ieee.std_logic_1164.all;
            use ieee.std_logic_arith.all;

            entity UARTReceiver is
            generic
            (
            frequency : integer:=50000000;
            baud : integer:=9600;
            oversampling : integer:=8
            );
            port
            (
            clk : in std_logic;
            rxd : in std_logic;
            rxd_data : out std_logic_vector(7 downto 0);
            rxd_data_ready : out std_logic
            );
            end entity UARTReceiver;

            architecture UARTReceiverArch of UARTReceiver is
            -- defining constants
            constant BIT_SPACE : integer := 10; -- 8 to 11 are common
            constant DIVISOR : integer := 1600;
            constant FREQ_INC : integer := (oversampling + 0) * baud / DIVISOR;
            constant FREQ_DIV : integer := frequency / DIVISOR;
            constant FREQ_MAX : integer := FREQ_DIV + FREQ_INC - 1;
            -- defining types
            type state_type is (idle, bit0, bit1, bit2, bit3, bit4, bit5, bit6, bit7, stop);
            -- defining signals
            signal state : state_type := idle; -- receiver's state
            signal rxd_sync_inv : std_logic_vector(1 downto 0);
            signal rxd_cnt_inv : std_logic_vector(1 downto 0);
            signal rxd_bit_inv : std_logic;
            signal baud_divider : integer range 0 to FREQ_MAX := 0;
            signal data : std_logic_vector(7 downto 0);
            signal baudover_tick : std_logic := '0';
            signal bit_spacing : integer range 0 to 15;
            signal next_bit : std_logic := '0';
            begin
            -- assignments
            next_bit <= '1' when bit_spacing = BIT_SPACE else '0';
            -- processes
            baud_gen : process(clk)--dung de bam xung, tao ra xung co tan so lon hon toc do baud
            begin
            if clk'event and clk = '1' then
            baud_divider <= baud_divider + FREQ_INC;
            if baud_divider >= FREQ_DIV then
            baud_divider <= 0;
            baudover_tick <= '1';
            else
            baudover_tick <= '0';
            end if;
            end if;
            end process baud_gen;
            --
            rxd_sync_inverted : process(clk) -- inverted to suppress phantom character
            begin
            if clk'event and clk = '1' then
            if baudover_tick = '1' then
            rxd_sync_inv <= rxd_sync_inv(0) & not rxd;
            end if;
            end if;
            end process rxd_sync_inverted;
            --
            rxd_counter_inverted : process(clk)
            begin
            if clk'event and clk = '1' then
            if baudover_tick = '1' then
            if rxd_sync_inv(1) = '1' and rxd_cnt_inv /= "11" then
            rxd_cnt_inv <= unsigned(rxd_cnt_inv) + 1;
            elsif rxd_sync_inv(1) = '0' and rxd_cnt_inv /= "00" then
            rxd_cnt_inv <= unsigned(rxd_cnt_inv) - 1;
            end if;

            if rxd_cnt_inv = "00" then
            rxd_bit_inv <= '0';
            elsif rxd_cnt_inv = "11" then
            rxd_bit_inv <= '1';
            end if;
            end if;
            end if;
            end process rxd_counter_inverted;
            --
            state_proc : process(clk)
            begin
            if clk'event and clk = '1' then
            if baudover_tick = '1' then
            case state is
            when idle =>
            if rxd_bit_inv = '1' then
            state <= bit0;
            end if;
            when bit0 =>
            if next_bit = '1' then
            state <= bit1;
            end if;
            when bit1 =>
            if next_bit = '1' then
            state <= bit2;
            end if;
            when bit2 =>
            if next_bit = '1' then
            state <= bit3;
            end if;
            when bit3 =>
            if next_bit = '1' then
            state <= bit4;
            end if;
            when bit4 =>
            if next_bit = '1' then
            state <= bit5;
            end if;
            when bit5 =>
            if next_bit = '1' then
            state <= bit6;
            end if;
            when bit6 =>
            if next_bit = '1' then
            state <= bit7;
            end if;
            when bit7 =>
            if next_bit = '1' then
            state <= stop;
            end if;
            when stop =>
            if next_bit = '1' then
            state <= idle;
            end if;
            end case;
            end if;
            end if;
            end process state_proc;
            --
            bit_spacing_proc : process(clk)
            begin
            if clk'event and clk = '1' then
            if state = idle then
            bit_spacing <= 0;
            elsif baudover_tick = '1' then
            if bit_spacing < 15 then
            bit_spacing <= bit_spacing + 1;
            else
            bit_spacing <= 8;
            end if;
            end if;
            end if;
            end process bit_spacing_proc;
            --
            shift_data_proc : process(clk)
            begin
            if clk'event and clk = '1' then
            if baudover_tick = '1' and next_bit = '1' and
            state /= idle and state /= stop then
            data <= not rxd_bit_inv & data(7 downto 1);
            end if;
            end if;
            end process shift_data_proc;
            --
            output_data_proc : process(clk)
            begin
            if clk'event and clk = '1' then
            if baudover_tick = '1' and next_bit = '1' and
            state = stop and rxd_bit_inv = '0' then
            rxd_data <= data;
            rxd_data_ready <= '1';
            else
            rxd_data_ready <= '0';
            end if;
            end if;
            end process output_data_proc;
            end UARTReceiverArch;
            Bạn có thể giải thích một chút về từng đoạn mã trên được không,mình đọc mãi mà vẫn không hiểu,nhất là đoạn bit_spacing_proc và đoạn rxd_counter_inverted,mình biết nhiều người mới tìm hiểu FPGA chắc cũng chưa thể hiểu được!
            Technical Institutes
            Mobile: 0983278725
            Email:

            Comment


            • #21
              Rs232

              Sao mình cũng làm như Code của bạn, thử nghiệm trên Spartan 3e kit nhưng chiều nhận dữ liệu từ máy tính không bao giờ đúng,dữ liệu luôn là "11111111".Chiều truyền thì rất đúng?
              Technical Institutes
              Mobile: 0983278725
              Email:

              Comment


              • #22
                chao cac ban! minh dang lam do an thu phat du lieu tu may tinh qua kit Spartan 3E voi phuong thuc truyen dung song RF, hien tai minh khong biet cach nhan du lieu tren kit nhu the nao, ban nao co phuong an giup do minh voi chan thanh cam on va xin hau ta

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                • mansion123
                  Bật mí những điều ít ai biết về thi công gỗ óc chó
                  bởi mansion123
                  Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng
                  ...
                  hôm nay, 16:08
                • 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
                Đang tải...
                X