Thông báo

Collapse
No announcement yet.

VHDL & Verilog

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

  • #61
    Ai giúp mình cai giao tiếp keyboard với kit DE2 với. Đang làm cái đó mà giờ mình không biết gì hết nè. Hình như trong diễn đàn này co sư huynh làm về cái này rồi. Mong các su huynh chỉ giáo với.

    Comment


    • #62
      Vhdl

      Nguyên văn bởi meocondihocv Xem bài viết
      gui minh theo dia chỉ này với tapthe12a42002@yahoo.com
      mình xin chân thành cám ơn
      co ai giup mình giai thich chuong trinh nay ko?, help me
      1 --------------------------------------
      2 LIBRARY ieee;
      3 USE ieee.std_logic_1164.all;
      4 --------------------------------------
      5 ENTITY dff IS
      6 PORT (d, clk, rst: IN STD_LOGIC;
      7q: OUT STD_LOGIC);
      8 END dff;
      9 --------------------------------------
      10 ARCHITECTURE dff OF dff IS
      11 BEGIN
      12 PROCESS
      13 BEGIN
      14 WAIT ON rst, clk;
      15 IF (rst='1') THEN
      16 q <= '0';
      17 ELSIF (clk'EVENT AND clk='1') THEN
      18 q <= d;
      19 END IF;
      20 END PROCESS;
      21 END dff;
      22 --------------------------------------
      học học nữa và học khi...... đến chết

      Comment


      • #63
        giải thích

        Nguyên văn bởi hoangphi Xem bài viết
        co ai giup mình giai thich chuong trinh nay ko?, help me
        1 --------------------------------------; Khai báo thư viện
        2 LIBRARY ieee;
        3 USE ieee.std_logic_1164.all;
        4 --------------------------------------; khai báo thực thể D flip flop
        5 ENTITY dff IS
        6 PORT (d, clk, rst: IN STD_LOGIC; các ngõ vào
        7q: OUT STD_LOGIC); ngõ ra q
        8 END dff; kết thúc khai báo thực thể
        9 --------------------------------------; chương trình
        10 ARCHITECTURE dff OF dff IS ; Cấu trúc 1 architecture bạn phải học nhé
        11 BEGIN
        12 PROCESS ; thực hiện tuần tự nên dùng PROCESS
        13 BEGIN
        14 WAIT ON rst, clk; chờ sự kiện rst, theo xung clock
        15 IF (rst='1') THEN ; if.....then ...elseif...then hàm điều kiện,
        16 q <= '0'; gán 0 cho ngõ ra q
        17 ELSIF (clk'EVENT AND clk='1') THEN
        18 q <= d; gán giá trị ngõ vào d cho q
        19 END IF;
        20 END PROCESS;
        21 END dff; kết thúc
        22 --------------------------------------
        Để hiểu rõ bạn nên tìm đọc cuốn "Asic lập trình được" của Tống Văn On tập 2, trong đó sẽ có cụ thể cấu trúc 1 chương trình VHDL và bạn sẽ hiểu nhanh thôi

        Comment


        • #64
          Thank A longlinux nhiều nhé, vấn dề la 14/01 này em phải nộp bài kiểm tra rồi, gio mua sách về đọc cũng ko kịp, nếu A có file hướng dẫn và giải thích các câu lệnh về VHDL thì hay wa, Nếu có thể A giai thick giùm em vài dòng được ko??ah, sau lệnh nào đò muốn giải thích phải dùng dấu ---------- chứ
          có phải thế này ko:
          q <= d;------------ gán giá trị ngõ vào d cho q
          học học nữa và học khi...... đến chết

          Comment


          • #65
            Nguyên văn bởi hoangphi Xem bài viết
            co ai giup mình giai thich chuong trinh nay ko?, help me
            1 --------------------------------------
            2 LIBRARY ieee;
            3 USE ieee.std_logic_1164.all;
            4 --------------------------------------
            5 ENTITY dff IS
            6 PORT (d, clk, rst: IN STD_LOGIC;
            7q: OUT STD_LOGIC);
            8 END dff;
            9 --------------------------------------
            10 ARCHITECTURE dff OF dff IS
            11 BEGIN
            12 PROCESS
            13 BEGIN
            14 WAIT ON rst, clk;
            15 IF (rst='1') THEN
            16 q <= '0';
            17 ELSIF (clk'EVENT AND clk='1') THEN
            18 q <= d;
            19 END IF;
            20 END PROCESS;
            21 END dff;
            22 --------------------------------------
            Nguyên văn bởi hoangphi Xem bài viết
            Thank A longlinux nhiều nhé, vấn dề la 14/01 này em phải nộp bài kiểm tra rồi, gio mua sách về đọc cũng ko kịp, nếu A có file hướng dẫn và giải thích các câu lệnh về VHDL thì hay wa, Nếu có thể A giai thick giùm em vài dòng được ko??ah, sau lệnh nào đò muốn giải thích phải dùng dấu ---------- chứ
            có phải thế này ko:
            q <= d;------------ gán giá trị ngõ vào d cho q
            uhm, chỉ cần -- thôi bạn
            Bạn có thể tìm hiểu thêm trong file gởi kèm, có gì thì hỏi
            Attached Files

            Comment


            • #66
              Pro Long linux ah, bạn có tài liệu này ma tiếng việt ko? thời gian sap đến rồi mà toàn là tiếng anh , hay la mình post thêm vài chương trình mẫu rồi A long giai thick gium em từng câu lệnh nhé
              bài 1:
              1 ---------------------------------------------
              2 LIBRARY ieee;
              3 USE ieee.std_logic_1164.all;
              4 ---------------------------------------------
              5 ENTITY decoder IS
              6 PORT ( ena : IN STD_LOGIC;
              7 sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
              8 x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
              9 END decoder;
              10 ---------------------------------------------
              11 ARCHITECTURE generic_decoder OF decoder IS
              12 BEGIN
              13 PROCESS (ena, sel)
              14 VARIABLE temp1 : STD_LOGIC_VECTOR (x'HIGH DOWNTO 0);
              15 VARIABLE temp2 : INTEGER RANGE 0 TO x'HIGH;
              16 BEGIN
              17 temp1 := (OTHERS => '1');
              18 temp2 := 0;
              19 IF (ena='1') THEN
              20 FOR i IN sel'RANGE LOOP -- sel range is 2 downto 0
              21 IF (sel(i)='1') THEN -- Bin-to-Integer conversion
              22 temp2:=2*temp2+1;
              23 ELSE
              24 temp2 := 2*temp2;
              25 END IF;
              26 END LOOP;
              27 temp1(temp2):='0';
              28 END IF;
              29 x <= temp1;
              30 END PROCESS;
              31 END generic_decoder;
              32 ---------------------------------------------
              bài 2: bài này thì em viết chay chuong trinh rồi nhưng ngỏ ra Y lam sao ấy, khó hiểu quá, a giai thick phần ngỏ ra nhe kĩ nhé
              1 ---------------------------------------
              2 LIBRARY ieee;
              3 USE ieee.std_logic_1164.all;
              4 ---------------------------------------
              5 ENTITY mux IS
              6 PORT ( a, b, c, d, s0, s1: IN STD_LOGIC;
              7y: OUT STD_LOGIC);
              8 END mux;
              9 ---------------------------------------
              10 ARCHITECTURE pure_logic OF mux IS
              11 BEGIN
              12 y <= (a AND NOT s1 AND NOT s0) OR
              13 (b AND NOT s1 AND s0) OR
              14 (c AND s1 AND NOT s0) OR
              15 (d AND s1 AND s0);
              16 END pure_logic;
              17 ---------------------------------------
              bài 3: bài này liên wan đến count, nhưng ko hoc được buổi nào hết nên mù tịt luôn
              1 ---------------------------------------------
              2 LIBRARY ieee;
              3 USE ieee.std_logic_1164.all;
              4 ---------------------------------------------
              5 ENTITY counter IS
              6 PORT (clk : IN STD_LOGIC;
              7 digit : OUT INTEGER RANGE 0 TO 9);
              8 END counter;
              9 ---------------------------------------------
              10 ARCHITECTURE counter OF counter IS
              11 BEGIN
              12 count: PROCESS(clk)
              13 VARIABLE temp : INTEGER RANGE 0 TO 10;
              14 BEGIN
              15 IF (clk'EVENT AND clk='1') THEN
              16 temp := temp + 1;
              17 IF (temp=10) THEN temp := 0;
              18 END IF;
              19 END IF;
              20 digit <= temp;
              21 END PROCESS count;
              22 END counter;
              Nguồn :bài mẫu copy từ altera
              Mong tin A long sớm
              học học nữa và học khi...... đến chết

              Comment


              • #67
                bài tập VHDL

                Pro Long linux ah, bạn có tài liệu này ma tiếng việt ko? thời gian sap đến rồi mà toàn là tiếng anh , hay la mình post thêm vài chương trình mẫu rồi A long giai thick gium em từng câu lệnh nhé
                bài 1
                1 ---------------------------------------------
                2 LIBRARY ieee;
                3 USE ieee.std_logic_1164.all;
                4 ---------------------------------------------
                5 ENTITY decoder IS
                6 PORT ( ena : IN STD_LOGIC;
                7 sel : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
                8 x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
                9 END decoder;
                10 ---------------------------------------------
                11 ARCHITECTURE generic_decoder OF decoder IS
                12 BEGIN
                13 PROCESS (ena, sel)
                14 VARIABLE temp1 : STD_LOGIC_VECTOR (x'HIGH DOWNTO 0);
                15 VARIABLE temp2 : INTEGER RANGE 0 TO x'HIGH;
                16 BEGIN
                17 temp1 := (OTHERS => '1');
                18 temp2 := 0;
                19 IF (ena='1') THEN
                20 FOR i IN sel'RANGE LOOP -- sel range is 2 downto 0
                21 IF (sel(i)='1') THEN -- Bin-to-Integer conversion
                22 temp2:=2*temp2+1;
                23 ELSE
                24 temp2 := 2*temp2;
                25 END IF;
                26 END LOOP;
                27 temp1(temp2):='0';
                28 END IF;
                29 x <= temp1;
                30 END PROCESS;
                31 END generic_decoder;
                32 ---------------------------------------------
                bài 2: bài này thì em viết chay chuong trinh rồi nhưng ngỏ ra Y lam sao ấy, khó hiểu quá, a giai thick phần ngỏ ra nhe kĩ nhé
                1 ---------------------------------------
                2 LIBRARY ieee;
                3 USE ieee.std_logic_1164.all;
                4 ---------------------------------------
                5 ENTITY mux IS
                6 PORT ( a, b, c, d, s0, s1: IN STD_LOGIC;
                7y: OUT STD_LOGIC);
                8 END mux;
                9 ---------------------------------------
                10 ARCHITECTURE pure_logic OF mux IS
                11 BEGIN
                12 y <= (a AND NOT s1 AND NOT s0) OR
                13 (b AND NOT s1 AND s0) OR
                14 (c AND s1 AND NOT s0) OR
                15 (d AND s1 AND s0);
                16 END pure_logic;
                17 ---------------------------------------
                bài 3: bài này liên wan đến count, nhưng ko hoc được buổi nào hết nên mù tịt luôn
                1 ---------------------------------------------
                2 LIBRARY ieee;
                3 USE ieee.std_logic_1164.all;
                4 ---------------------------------------------
                5 ENTITY counter IS
                6 PORT (clk : IN STD_LOGIC;
                7 digit : OUT INTEGER RANGE 0 TO 9);
                8 END counter;
                9 ---------------------------------------------
                10 ARCHITECTURE counter OF counter IS
                11 BEGIN
                12 count: PROCESS(clk)
                13 VARIABLE temp : INTEGER RANGE 0 TO 10;
                14 BEGIN
                15 IF (clk'EVENT AND clk='1') THEN
                16 temp := temp + 1;
                17 IF (temp=10) THEN temp := 0;
                18 END IF;
                19 END IF;
                20 digit <= temp;
                21 END PROCESS count;
                22 END counter;
                Nguồn :bài mẫu copy từ altera
                Mong tin A long sớm
                học học nữa và học khi...... đến chết

                Comment


                • #68
                  Chắc bạn Hoangphi là sinh viên. Tớ chẳng biết bạn học kiểu gì mà mấy câu lệnh VHDL như vậy cũng không hiểu. Ngày trước lúc tớ làm PhD bên Mỹ đã từng làm TA có hướng dẫn sinh viên viết Verilog. Sinh viên Mỹ học có 1 quarter (10 tuần) về RTL code đã có thể thiết kế cả môt processor 16 bit rồi (tất nhiên không phải sinh viên nào cũng làm tốt). Bây giờ sánh báo ngành điện tử toàn bằng tiếng Anh mà bạn không chịu đọc thì kiến thức làm sao nâng cao được. Tớ lúc đầu định để bạn tự làm nhưng thôi mong lần sau bạn cố gắng hơn.

                  Bài thứ nhất: giá trị X đầu ra có 8 bit. Nếu ena =0, 8 bit đều là 1 (lệnh 17). Nếu ena=1 X có 7 bit 1 và 1 bit 0 (lệnh 19-28). Vị trí của bit 0 phụ thuộc vào giá trị sel (lệnh 20-26). Đoạn vòng lặp for dùng để chuyển từ giá trị sel từ binary sang số để gán bit 0 vào vị trí tương ứng.

                  Bài thứ 2 là decoder. Y=A nếu s1=0, s2=0; Y=B nếu s1=0 s0=1; Y=C nếu s1=1 s0=0; và Y=D nếu s1=1 s0=1

                  Bài thứ 3 là counter nhưng bài này viết code sai. counter này không có đầu vào reset vậy thì làm sao có thể kiểm soát được giá trị ra. Câu lệnh 15 viết đây là rising edge flipflop. Mỗi lần có sườn lên của tín hiệu clk thì đầu ra lại tăng lên 1 giá trị. Nếu giá trị tăng lên bằng 10 thì nó bị chuyển lại thành 0. (bộ đếm từ 0 đến 9).

                  Comment


                  • #69
                    Nguyên văn bởi danbeo85 Xem bài viết
                    Nếu bạn đã nắm phần căn bản về verilog và nios thì hãy tập viết IP cho hệ thống NIOS đi như thế sẽ vừa có kinh nghiệm về verilog và C/C++ luôn. Trong hệ thống của bạn, các IP core là tự làm hay sử dụng của nhà cung cấp. Bạn nói đã làm trên hệ thống âm thanh thì IP giao tiếp âm thanh đó bạn tự viết hay dùng IP có sẵn của KIT DE2 do nhà sản xuất cung cấp trên mạng. Hiện nay hình như chưa có nơi nào dạy về NIOS II cả, ngay cả phòng thí nghiệm vi mạch các thầy còn đang tìm hiểu nó. Vào đợt luận văn mới đây có 2 người làm về NIOS II đó, họ đều làm về xử lý tín hiệu âm thanh, bạn có thể tham khảo tại bộ môn. Trong luận văn họ chỉ cho bạn trình tự tạo một hệ thống NIOS, trình tự thiết kế IP, và một số lỗi có thể mắc khi thiết kế. Bạn là sv hay đã ra trường rồi, nếu là sv bạn có thể mượn lv xem, trong hai lv đó có một cuốn do thầy Luật hướng dẫn làm equalizer, echo, reverb, giao tiếp máy tính. đa số các IP là do sv viết chỉ có một số là phải lấy của nhà sản xuất: SDRAM controller, JTAG UART. Nếu mượn không được luận văn thì mình sẽ chép file cho bạn.
                    Anh có thể send cho em một bản ko?! thanks a trước nha! em dang tap viet ip core ma ko biết bắt đầu từ đâu!

                    Comment


                    • #70
                      Nguyên văn bởi chmt Xem bài viết
                      Có ai đã làm giải mã MP3 trên kit DE2/DE1 chưa? Có ai có tài liệu về cái đó ko cho mình xin với.
                      ko biết bạn đã làm được cái này chưa! nếu có tai liệu j thi cho minh xin với! thanks!

                      Comment


                      • #71
                        Xin chào mọi người!

                        Có Bác nào đã từng dùng tools để convert Verilog sang Spice? Chia sẻ với mình với, vì đang cần để tham khảo.

                        -/OC/-

                        Comment


                        • #72
                          sao không ai tranh luận gì nữa cả???
                          Có ai có tài liều về xử lý âm thanh ( file có đuôi .WAV) trên kit DE2 không? Cho em xin tài liệu với?

                          Comment


                          • #73
                            Nguyên văn bởi danbeo85 Xem bài viết
                            rockphuthuy đang tìm hiểu phần nào của KIT DE2, bạn đã làm các bài lab của Altera chưa? Nếu làm được 5 bài đầu là phần căn bản về KIT bạn ok rồi. Sau đó hãy làm quen với giao tiếp SRAM, VGA, Audio codec. Còn USB thì từ từ tìm hiểu, nó rất khó chịu. Sau khi đã có thể giao tiếp thiết bị trên KIT thì hãy tìm hiểu qua NIOS II, và tập viết IP core cho hệ thống. Khi nào bạn có thể tạo ra được một hệ thống NIOS II có các thiết bị ngoại vi ví dụ như Audio codec interface, VGA controller, RS232, PS2 Interface,... lúc đó bạn mới có thể viết một ứng dụng thật sự mạnh ví dụ như tạo một hệ điều hành trên hệ thống NIOS II. Nếu bạn chỉ viết ứng dụng thuần túy là tạo ra một IP core để thực thi một nhiệm vụ nào đó thì mình khuyên nên làm về DSP(ví dụ tạo các bộ lọc số, FFT,...). Để làm về DSP trước tiên bạn phải biết cách giao tiếp với VGA và Audio codec. Hai thành phần này rất quan trọng trong các ứng dụng xử lý ảnh và xử lý âm thanh. Hai đề tài này phù hợp cho việc viết ứng dụng thuần vẻilog và VHDL. Nếu bạn là SV BK thì bạn được mượn KIT tại phòng thí nghiệm vi mạch 203B3, và nhớ kiểm tra trước khi sử dụng do có một số KIT bị hư một số thiết bị, tốt nhất là lấy KIT có chương trình mặc định của Altera( Coi LCD có chữ "WELCOME ...").
                            Anh ơi, anh có thể cho em xin tài liệu về giao tiếp audio codec như thế nào được không ạ? Em không học bách khoa nên ko thể mượn các quyển luận văn được

                            Comment


                            • #74
                              Nguyên văn bởi l_anh60 Xem bài viết
                              Anh ơi, anh có thể cho em xin tài liệu về giao tiếp audio codec như thế nào được không ạ? Em không học bách khoa nên ko thể mượn các quyển luận văn được
                              Bạn đọc hẳn sách viết về fpga cho đầy đủ và chi tiết. Nói chung bạn nên đọc các sách của nước ngoài viết. Tớ không biết mấy bài luận văn viết thế nào nhưng chắc là thường chỉ cóp nhặt các phần khác nhau trong sách và viết lại theo một chủ đề nào đó mà thôi. Những luận văn đại học thì chắc là không có gì đáng để đọc. Những luận văn PhD thì thường là về các vấn đề chuyên sâu cần thiết cho nghiên cứu. Tuy nhiên thường người làm PhD thường đã xuất bản một số bài báo về nghiên cứu của họ trên các tạp chí quốc tế. Đọc thẳng các bài báo nhanh và tiện lợi hơn nhiều. Tớ có đưa lên mạng quyển sách viết tương đối tốt về fpga dùng cho nios II. Bạn xem lại ở đây.

                              http://www.dientuvietnam.net/forums/...64/#post424167

                              Comment


                              • #75
                                module Counter(a1, a2, b1, clk_in, rst, set, bcd_out, clk_out, b2);
                                input clk_in, a1, a2, b1; // clock
                                input rst; // reset : low active
                                input [3:0] set;
                                output reg [3:0] bcd_out;
                                output reg clk_out;
                                output reg [2:0] b2 = 0;
                                always@(posedge clk_in or negedge rst)
                                begin
                                if (~rst)
                                begin
                                bcd_out <= 0;
                                clk_out <= 0;
                                end
                                else if(b2==0)
                                begin
                                if (bcd_out == set)
                                begin
                                bcd_out <= 0;
                                clk_out <= 1;
                                end
                                else
                                begin
                                bcd_out <= bcd_out + 1;
                                clk_out <= 0;
                                end
                                end
                                end

                                always@(posedge a1)
                                begin
                                b2 <= b2 + 1 ;
                                if (b2 == 6)
                                b2 <= 0;
                                end

                                always@(posedge a2)
                                if(b1)
                                begin
                                bcd_out <= bcd_out + 1;
                                if(bcd_out==9 && b2==1)
                                bcd_out <= 0;
                                if(bcd_out==5 && b2==2)
                                bcd_out <= 0;
                                if(bcd_out==9 && b2==3)
                                bcd_out <= 0;
                                if(bcd_out==5 && b2==4)
                                bcd_out <= 0;
                                if(bcd_out==3 && b2==5)
                                bcd_out <= 0;
                                if(bcd_out==2 && b2==6)
                                bcd_out <= 0;
                                end

                                endmodule

                                giúp mình với code mình bị lỗi: Error (10028): Can't resolve multiple constant drivers for net "bcd_out" at Counter.v(37) mọi người giúp e nhé, mai e phải nộp rùi

                                Comment

                                Về tác giả

                                Collapse

                                yesme@ Tìm hiểu thêm về yesme@

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

                                Collapse

                                Đang tải...
                                X