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

  • NobitNohoi
    replied
    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

    Leave a comment:


  • MTAPIC
    replied
    Ủ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 đỡ!

    Leave a comment:


  • Rommel.de
    replied
    Đú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ế độ

    Leave a comment:


  • qkhanh
    replied
    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

    Leave a comment:


  • NobitNohoi
    replied
    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

    Leave a comment:


  • MinhHa
    replied
    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 đã đủ.

    Leave a comment:


  • tonyvandinh
    replied
    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

    Leave a comment:


  • tonyvandinh
    replied
    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.

    Leave a comment:


  • Rommel.de
    replied
    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).

    Leave a comment:


  • tonyvandinh
    replied
    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.

    Leave a comment:


  • hithere123
    replied
    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,

    Leave a comment:


  • Rommel.de
    replied
    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ễ.

    Leave a comment:


  • tonyvandinh
    replied
    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.

    Leave a comment:


  • Rommel.de
    replied
    À 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à.

    Leave a comment:


  • Rommel.de
    replied
    Nguyên văn bởi hithere123 Xem bài viết
    Chào bạn Rommel.de,

    Mình hiểu ý bạn là nếu cần thêm một xung hiệu chỉnh ngoài như mình thì dùng luôn cái máy phát xung đấy chứ làm FPGA làm gì nữa cho mệt. Đồng ý với bạn là với tầm 10K là có được máy phát xung đảm bảo ngon lành cành đào với bài toán các bạn ấy đưa ra.

    Tuy nhiên giải pháp của mình đưa lên chỉ là một giải pháp tham khảo nếu dùng FPGA vì như bạn MTAPIC đã nói các bạn đấy đã làm rồi nhưng "đang trăn trở" liệu giải pháp của các bạn có vấn đề gì không? Mình cũng rất muốn biết giải pháp dùng FPGA của các bạn đấy có gặp vấn đề về sai số của xung đồng hồ không.

    Phần thứ hai các bạn ấy băn khoăn là phần khuếch đại xung với yêu cầu cao về sườn. Cái này mới chính là cái mình muốn bàn nhưng các câu hỏi của mình về độ dốc dường như là những quan tâm "tiểu tiết". Vì vậy mình đưa thử một giải pháp dùng FPGA tạo xung để có thể kết thúc thảo luận phần tạo xung bằng FPGA. Sau đó mình muốn quay lại với mấy cái "tiểu tiết" đấy. Giải pháp mình đang nghĩ là push-pull có thể khả thi.

    Phần thứ 3 là truyền xung, nhưng có lẽ cái này để sau vì theo như mình thấy dự án các bạn đấy đang làm có vẻ chưa phát triển tới phần này, hoặc phần này đã có người khác lo.

    Nếu bạn MTAPIC hoặc mọi người không có thảo luận về FPGA nữa thì mình chuyển sang phần khuếch đại nhỉ?

    Thân mến,
    Chào bạn Hithere123,

    Tớ nghĩ có một điểm tớ cần làm rõ hơn. Lúc trước tớ có nói đến máy phát tín hiệu giá dưới 10K. Cái máy đó chỉ dùng để phát tín hiệu sine ở một tần số xác định dùng làm tín hiệu đồng hồ để đưa vào trong fpga mà thôi. Sở dĩ ta dùng nó thay vì mạch giao động khác (chỉ là mạch giao động tạo tín hiệu đồng hồ chứ chưa tạo xung) vì nó được căn chỉnh tốt. Nếu như bạn muốn dùng máy phát tín hiệu xung ở mức độ chính xác cao thì ít nhất cũng phải dùng loại vector generator có giá vài chục ngàn. Tớ nghĩ cái này không cần thiết và không hay lắm vì ngoài việc tạo xung ra ta cũng phải tính toán rất nhiều bên trong radar. Cái này nên nhét chung vào trong fpga vì nó có tín hiệu đồng bộ sẵn bên trong rồi.

    Về việc truyền xung đi tớ hoàn toàn đồng ý với bạn dùng cáp quang. 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.

    Tớ nghĩ phần đáng để bàn nhất là phần xử lý tín hiệu của radar. Cái này tớ đề nghị nhập chung vào trong fpga tạo xung. Phần controller, mode register, và phần điều khiển của máy tính bên ngoài nên làm việc với toàn bộ các khối.

    Leave a 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