Thông báo

Collapse
No announcement yet.

FPGA và các giải pháp ứng dụng trong Công Nghệ Quân Sự!

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

  • À mà các bạn dùng systemc làm gì? Cái đoạn code này tớ viết bằng verilog cũng mấy chục dòng là xong đơn giản lắm mà.

    Comment


    • Nguyên văn bởi Rommel.de Xem bài viết
      À mà các bạn dùng systemc làm gì? Cái đoạn code này tớ viết bằng verilog cũng mấy chục dòng là xong đơn giản lắm mà.
      Đúng, thiết kế này quá đơn giản để dùng systemC. Nhưng ai cũng bắt đầu từ đơn giản phải không?
      Last edited by tonyvandinh; 15-07-2011, 04:42.
      Chúc một ngày vui vẻ
      Tony
      email : dientu_vip@yahoo.com

      Comment


      • Tớ cũng bắt chước bạn Hithere123 viết chơi một đoạn verilog code. Các giá trị dùng để so sánh được đưa vào từ bên ngoài. Đoạn code có 43 dòng rất, rất đơn giản.
        Code:
        module Pulse_gen(Clk, enable, Cycle, P1_one, P1_zero, P2_one, P2_zero, P3_one, P3_zero, P4_one, P4_zero, P5_one, P5_zero, P1, P2, P3, P4, P5);
           input Clk, enable;
           input [9:0] Cycle, P1_one, P1_zero, P2_one, P2_zero, P3_one, P3_zero, P4_one, P4_zero, P5_one, P5_zero;
           output      P1, P2, P3, P4, P5;
           reg 	       P1, P2, P3, P4, P5;
           reg [9:0]   Counter;
           wire        Compare1, Compare2, Compare3, Compare4, Compare5;
           
           always @ (posedge Clk)
             begin
        	if (enable==0)
        	  begin
        	     P1<=0;
        	     P2<=0;
        	     P3<=0;
        	     P4<=0;
        	     P5<=0;
        	     Counter<=0;
        	  end
        	else
        	  begin
        	     if (Counter==Cycle)
        	       Counter<=0;
        	     else
        	       Counter<=Counter+1;
        	     if (Compare1==1)
        	       P1<=~P1;
        	     if (Compare2==1)
        	       P2<=~P2;
        	     if (Compare3==1)
        	       P3<=~P3;
        	     if (Compare4==1)
        	       P4<=~P4;
        	     if (Compare5==1)
        	       P5<=~P5;
        	  end // else: !if(enable==0)
             end // always (@ posedge Clk)
           assign Compare1=(((P1==1)?P1_zero:P1_one)==Counter);
           assign Compare2=(((P2==1)?P2_zero:P2_one)==Counter);
           assign Compare3=(((P3==1)?P3_zero:P3_one)==Counter);
           assign Compare4=(((P4==1)?P4_zero:P4_one)==Counter);
           assign Compare5=(((P5==1)?P5_zero:P5_one)==Counter);
        endmodule // Pulse_gen
        Các bạn thấy viết code để tạo xung quá dễ.

        Comment


        • Chào bạn Rommel.de,

          Nói chung với phần tạo xung bằng FPGA, bạn cũng nhất trí dùng bộ đếm cho đơn giản, thêm nữa nếu xung đồng hồ cung cấp cho FPGA có sai số thì mình cũng đã đưa thêm ý tưởng calibration. Như vậy, phần tạo xung bằng FPGA đã có nhiều thảo luận tương đối rồi, bây giờ đợi xem bạn MTAPIC có đóng góp thêm gì không là mình có thể chuyển sang các phần tiếp theo.

          Về cái này:
          Nguyên văn bởi Rommel.de Xem bài viết
          Về phần công suất tớ chưa hiểu ý bạn về push-pull là như thế nào vì nếu tớ không nhầm thì push-pull là dùng để khuếch đại tín hiệu tương tự (ví dụ như tín hiệu sine). Đối với việc tạo xung vuông như vậy thì trong ASIC người ta dùng mạch level shifter, tiếp sau là một mạch tương tự như inverter mà thôi.
          Mình định dùng "push-pull" tức là cần điều khiển cả việc kéo lên và kéo xuống vì yêu cầu về độ dốc sườn là khá cao. Nếu chì điều khiển việc kéo lên hoặc kéo xuống thì mình e là không đảm bảo yêu cầu về sườn. Còn tất nhiên việc chuyển từ 3.3V tại chân FPGA sang 20V-40V thì phải có nguyên tắc "levelshift" rồi. Không biết giải pháp của bạn MTAPIC cho phần này là như thế nào?

          Thân mến,

          Comment


          • Nguyên văn bởi Rommel.de Xem bài viết
            Tớ cũng bắt chước bạn Hithere123 viết chơi một đoạn verilog code. Các giá trị dùng để so sánh được đưa vào từ bên ngoài. Đoạn code có 43 dòng rất, rất đơn giản.
            Code:
            module Pulse_gen(Clk, enable, Cycle, P1_one, P1_zero, P2_one, P2_zero, P3_one, P3_zero, P4_one, P4_zero, P5_one, P5_zero, P1, P2, P3, P4, P5);
               input Clk, enable;
               input [9:0] Cycle, P1_one, P1_zero, P2_one, P2_zero, P3_one, P3_zero, P4_one, P4_zero, P5_one, P5_zero;
               output      P1, P2, P3, P4, P5;
               reg 	       P1, P2, P3, P4, P5;
               reg [9:0]   Counter;
               wire        Compare1, Compare2, Compare3, Compare4, Compare5;
               
               always @ (posedge Clk)
                 begin
            	if (enable==0)
            	  begin
            	     P1<=0;
            	     P2<=0;
            	     P3<=0;
            	     P4<=0;
            	     P5<=0;
            	     Counter<=0;
            	  end
            	else
            	  begin
            	     if (Counter==Cycle)
            	       Counter<=0;
            	     else
            	       Counter<=Counter+1;
            	     if (Compare1==1)
            	       P1<=~P1;
            	     if (Compare2==1)
            	       P2<=~P2;
            	     if (Compare3==1)
            	       P3<=~P3;
            	     if (Compare4==1)
            	       P4<=~P4;
            	     if (Compare5==1)
            	       P5<=~P5;
            	  end // else: !if(enable==0)
                 end // always (@ posedge Clk)
               assign Compare1=(((P1==1)?P1_zero:P1_one)==Counter);
               assign Compare2=(((P2==1)?P2_zero:P2_one)==Counter);
               assign Compare3=(((P3==1)?P3_zero:P3_one)==Counter);
               assign Compare4=(((P4==1)?P4_zero:P4_one)==Counter);
               assign Compare5=(((P5==1)?P5_zero:P5_one)==Counter);
            endmodule // Pulse_gen
            Các bạn thấy viết code để tạo xung quá dễ.
            Tạm dịch code của bạn ra systemC . Cũng rất đơn giản thôi.

            Code:
            #include <systemc.h>
            #define NUM_CLK 5
            typedef sc_uint<9> uint9;
            
            SC_MODULE(Pulse_gen_mod) {
              sc_in<bool> clk;
              sc_in<bool> reset;
              sc_in<bool> enable;
              sc_in<uint9> cycle;
              sc_in<uint9> zero[NUM_CLK];
              sc_in<uint9> one[NUM_CLK];
              sc_out<bool> P[NUM_CLK];
            
              uint9 counter;
              bool t_P[NUM_CLK];
            
              void Pulse_gen_do_it()
              {
                bool compare;
                if (reset.read())
                {
                  counter = 0;
                  for (int i=0; i<NUM_CLK; i++)
                    t_P[i] = 0;
                } else if (enable.read())
                {
                  for (int i=0; i<NUM_CLK; i++)
                  {
                    compare = ((t_P[i]?zero[i].read():one[i].read())==counter);
                    if (compare)
                      t_P[i] ^= 1;      
                  }
                  if (counter < cycle.read())
                    counter++;
                  else
                    counter = 0;
                }     
                for (int i=0; i<NUM_CLK; i++)
                  P[i].write(t_P[i]); 
              }
            
              SC_CTOR(Pulse_gen_mod):
                clk("clk"),
                reset("reset"),
                enable("enable")
              {
                SC_METHOD(Pulse_gen_do_it);
                sensitive << clk.pos();
              }
            };
            Last edited by tonyvandinh; 16-07-2011, 08:36.
            Chúc một ngày vui vẻ
            Tony
            email : dientu_vip@yahoo.com

            Comment


            • Chào anh Tony,

              Ngay xưa em có dùng qua systemC nhưng mà về sau không dùng nữa nên quên hết rồi. Nên em muốn hỏi lại anh mấy thứ về đoạn code anh viết ở trên. Nếu anh thấy ngớ ngẩn thì cũng đừng cười vì em quên hết rồi.

              Trong đoạn code em viết thì Compare1,2,3,4,5 được so sánh qua mạch combinational logic không thông qua flipflop. Chỉ cần biết tình trạng hiện thời của xung là 0, hay 1 thì nó lập tức so sánh. Trong đoạn code của anh viết tất cả các hàm đều sensitive với đồng hồ như vậy thì có tương đương không? Chỗ này em không hiểu lắm. Ngoài ra em nghĩ giá trị của counter cần phải reset về 0 khi nó chạy hết một chu kỳ tức là bằng giá trị cycle được đưa vào từ bên ngoài (anh không đưa giá trị này vào).

              Comment


              • Ngay xưa em có dùng qua systemC nhưng mà về sau không dùng nữa nên quên hết rồi. Nên em muốn hỏi lại anh mấy thứ về đoạn code anh viết ở trên. Nếu anh thấy ngớ ngẩn thì cũng đừng cười vì em quên hết rồi.
                Verilog từ C mà ra, cho nên ôn lại cũng dễ thôi. Sở dĩ tôi chuyển qua C hoặc systemC vì hiện tại ở mấy nước hiện đại đang chuyển cách thức sáng chế về hướng này. Đăng lên diẽn đàn để các bạn làm quen để sau này khỏi bỡ ngỡ.

                Trong đoạn code em viết thì Compare1,2,3,4,5 được so sánh qua mạch combinational logic không thông qua flipflop. Chỉ cần biết tình trạng hiện thời của xung là 0, hay 1 thì nó lập tức so sánh. Trong đoạn code của anh viết tất cả các hàm đều sensitive với đồng hồ như vậy thì có tương đương không? Chỗ này em không hiểu lắm.
                Compare chỉ là giá trị tạm thời cho nên có thể nghĩ nó là combinational. C là tuần tự cho nên cách suy nghĩ và viết có hơi khác RTL.

                Ngoài ra em nghĩ giá trị của counter cần phải reset về 0 khi nó chạy hết một chu kỳ tức là bằng giá trị cycle được đưa vào từ bên ngoài (anh không đưa giá trị này vào).
                counter dùng 9 bits, khi đếm tới 511 thì sẽ tự động trở lại 0.
                Chúc một ngày vui vẻ
                Tony
                email : dientu_vip@yahoo.com

                Comment


                • Ngoài ra em nghĩ giá trị của counter cần phải reset về 0 khi nó chạy hết một chu kỳ tức là bằng giá trị cycle được đưa vào từ bên ngoài (anh không đưa giá trị này vào).
                  Đúng, tôi sót điểm này và đã chữa lại code. Thanks
                  Chúc một ngày vui vẻ
                  Tony
                  email : dientu_vip@yahoo.com

                  Comment


                  • Vấn đề không biết nếu sử dụng một Chip FPGA với tài nguyên có sẵn (mình ví dụ cùng chip XC3S500E) thì tài nguyên đủ dùng, thậm chí là thừa, phải không bạn (mạch mẫu của bọn mình dùng con XC3S50VQ100)
                    Nếu chỉ tạo xung như bạn nói thì con CPLD đã đủ.
                    Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

                    Biến tần
                    Máy giặt
                    Lò vi sóng
                    Bếp từ.
                    Tủ lạnh.
                    Điều hòa

                    Comment


                    • Anh em nhà MTAPIC à,
                      Anh biết các chú rất đam mê kỹ thuật QS, các chú phải trải nghiệm nhiều nhiều.
                      Vì vậy các chú chém gió vừa thôi, đừng mang những vấn đề nhạy cảm lên diễn đàn.
                      Có nhất thiết là phải khoe hàng như thế k? Cẩn thận C2 sờ gáy đấy em ạ.
                      Bài toán của chú khó nhưng giải quyết đc, cũng chẳng cần dùng FPGA làm j,

                      ĐÃ KHÔNG BIẾT LẠI HAY HỎI

                      Comment


                      • haizz cứ mang mấy cái nhạy cảm này lên diễn đàn bàn . Có lẽ MOD nên xử lý luồng này thôi .Có lẽ không nên để lại

                        Comment


                        • Đúng là nản toàn tập. Mấy cái công nghệ radar, tên lửa này được áp dụng vào dân sự cả mấy chục năm rồi, có cái quái gì là nhạy cảm không biết nữa. Ở cái xứ mèo hoang này sách vở tài liệu về radar, tên lửa bán đầy rẫy. Mà mấy cái đài tên lửa như C125 chắc mấy thằng Tung của nó rành như lòng bàn tay, có đưa lên hay không cũng thế. Trong lúc thằng Viettel ở VN đi làm việt gian nhập hàng của bọn Huawei tung của thì chẳng thấy ai nói gì. Sau lưng thằng Huawei là bộ quốc phòng tung của chứa ai, bọn này cũng đã bị cáo buộc làm gián điệp ăn cắp thông tin rồi.

                          Nhưng mà thôi, nếu vì mấy bài post ở đây mà chủ thớt phải ăn cơm chính phủ thì tội nghiệp cho vợ con chủ thớt lắm. Có lẽ nên cho cái thớt này về vườn.
                          Last edited by jefflieu; 18-07-2011, 13:01. Lý do: Không dùng từ liên quan chính trị, chế độ

                          Comment


                          • Ủa C2 cũng sờ gáy khi tôi bàn chuyện khoa học à? khi tôi nghiên cứu à?tôi đưa thông tin nào là thông tin mật? có đóng dấu Top Secret ko? mà sợ C2 sờ gáy, đã ko giúp thì thôi, lại còn bói nhăng nói cuội, có thể anh đã qua cái thời nghiên cứu như tôi, còn cái câu chém gió, tôi tói thật, tôi khinh anh với những câu nói như thế, tôi hỏi các bạn diễn đàn đang bàn về cái 2 pic này, xem tôi chém gió câu nào, tôi bảo tôi chưa làm được, muốn nhờ anh em cùng bàn luận cùng giúp nhau, tôi đam mê KTQS là việc của bản thân tôi, Tôi khoe hàng cái gì ra nào?tôi đưa mấy cái chuẩn xung cần để làm ra sản phẩm, ai cấm tôi được, sản phẩm tôi chưa chạy, tôi đưa ra à?tôi đã khoe cái gì ở 2 pic này mà bảo khoe hàng, dù anh có nhiều tuổi hơn tôi gấp mấy, tôi vẫn coi như là thằng con nít, không biết nói có suy nghĩ, mà chỉ biết chọc gậy bánh xe,tôi ko quen anh, không biết anh là ai, nhưng tôi nghĩ chắc anh biết tôi, nhưng tôi coi khinh những thằng chỉ biết đá xuáy mà không biết nghĩ rằng mình ở đâu!Tôi ăn cơm nhà nước, ăn cơm quân đội, làm việc cũng cống hiến hết mình, nhà nước và quân đội cần những người dám nghĩ dám làm và tôn trọng họ chứ cần gì tôn trọng cái người mà chỉ biết cho bản thân chỉ biết mình, mà ko biết nghĩ tới điều gì nó khác hơn!
                            Thiết nghĩ làm ở đâu cũng thế, tôi làm tôi nhận lương, cái ăn của tôi là công sức của tôi, không phải tự dưng người ta nhét cơm vào mồm tôi đâu.
                            Nếu biết tôi quá rõ thì nên để lại cái tên, nhìn đời bằng nửa con mắt thế dễ vấp lắm!

                            Nếu cảm thấy cái mạch đồng bộ dễ quá, ko thèm làm để anh chứng tỏ tài năng của mình, hãy giúp tôi cái phần này!

                            Xác định tọa độ mục tiêu trong không gian!

                            trở lại bài toán hệ đồng bộ, các bạn đã giúp mình rất nhiều, bởi vì mấy hôm nay có nhiều việc quá nên mình không vào diễn đàn thảo luận, để ngày mai mình tiếp tục!và đưa ra một số bài toán mới nhờ anh em giúp đỡ!
                            Removing Bariers to Inovation!
                            Seaching in Future!

                            Comment


                            • Anh chỉ nhắc nhở các chú 1 chút thôi sao mà chú nóng tính thế.
                              Anh khuyên các chú nên biết lựa sức mình, tuổi nhỏ đừng làm vc phi thường. Mình phải biết tầm của mình đang ở đâu.
                              Trước khi đặt vấn đề lên diễn đàn hãy động não 1 chút xem kết quả sẽ như thế nào.
                              Anh k thích mang con bỏ chợ như nhiều Top khác, và Top này cũng thế thôi.
                              Bài toán thì rất nhiều nhưng vấn đề có giải quyết đc k?
                              Anh k có thời gian nhiều nên Bài toán của chú tìm người khác nhé

                              ĐÃ KHÔNG BIẾT LẠI HAY HỎI

                              Comment


                              • Mình không chuyên về phần này nên chỉ tham gia việc điều hòa (moderate) các bạn.

                                - Mọi bài post chỉ nên tập trung vào phần câu hỏi và giải quyết vấn đề của bạn MTAPIC, không nên có những tranh cãi về cá nhân. Nếu có ý kiến gì thì gửi thẳng đến tác giả.

                                - Và mình nghĩ tác giả cũng chỉ nên tập trung nhiều vào phần phát triển thêm các giải đáp, đề xuất. Mình nghĩ bạn có cân nhắc khi post những bài này. Cũng không cần đính chính làm gì, nói ra nói vào sẽ loãng thread. Nếu một giải pháp nào đó có thể thực hiện và bạn cảm thấy đúng thì cũng nên thứ thực hiện nó, kết quả thế nào báo lại cho anh em hay mà học hỏi thêm.

                                Mình cũng không điều hành kiểu xóa bỏ bài viết của người này hay của người khác nhưng cũng mong mọi người cân nhắc kĩ trước khi post.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X