作为可编程器件的版主,今天介绍一下芯驿电子科技的国产FPGA黑金开发板 PGL22G。
       开发板的整个结构,继承了的核心板+扩展板的模式来设计的。 核心板和扩展板之间使用高速板间连接器连接。核心板主要由 FPGA + DDR3 +QSPI FLASH 构成,承担 FPGA 高速数据处理和存储的功能,加上 FPGA 和 DDR3 SDRAM 之间的高速数据读写, 数据位宽为 16 位, 整个系统的带宽高达 10Gb/s(800M*16bit); 另外 DDR3 容量高达 256MB, 满足数据处理过程中对高缓 冲 区 的 需 求 。  FPGA为PGL22G6CMBG324 芯片, FPGA 是 MBG324 封装。底板为核心板扩展了丰富的外围接口,其中包含 1 路千兆以太网接口、 1 路 HDMI输出接口、 1 路 USB2.0 接口、 1 路 UART 串口接口、 1 路 SD 卡接口、 1 个 JTAG 调试接口、 一个摄像头接口、 1 路 40 针的扩展口和一些按键, LED, RTC 和 EEPROM 电路。
      1.png

     LED的的FPGA代码入下:
    定义了一个 32 位的寄存器 timer, 用于循环计数0~199_999_999(4 秒钟), 当计数到 49_999_999(1 秒)的时候,熄灭第一个 LED 灯;当计数到99_999_999(2 秒)的时候,熄灭第二个 LED 灯;当计数到 149_999_999(3 秒)的时候,熄灭第三个 LED 灯;当计数到 199_999_999(4 秒)的时候,熄灭第四个 LED 灯,计数器再重新计数。
`timescale 1ns/1ns
  • module led_test
  • (            
  •   sys_clk,      // system clock 50Mhz on board
  •   rst_n,          // reset ,low active            
  •   led             // LED,use for control the LED signal on board
  • );
  •             
  • input         sys_clk;
  • input         rst_n;
  • output [3:0]  led;
  • //define the time counter
  • reg [31:0]   timer;                  
  • reg [3:0]    led;
  •          
  •   always @(posedge sys_clk or negedge rst_n)   
  •     begin
  •       if (~rst_n)                           
  •           timer <= 32'd0;                     // when the reset signal valid,time counter clearing
  •       else if (timer == 32'd199_999_999)    //4 seconds count(50M*4-1=199999999)
  •           timer <= 32'd0;                       //count done,clearing the time counter
  •       else
  •                     timer <= timer + 1'b1;            //timer counter = timer counter + 1
  •     end
  •   always @(posedge sys_clk or negedge rst_n)   
  •     begin
  •       if (~rst_n)                     
  •           led <= 4'b0000;                  //when the reset signal active         
  •       else if (timer == 32'd49_999_999)    //time counter count to 1st sec,LED1 lighten
  •    
  •           led <= 4'b0001;                 
  •       else if (timer == 32'd99_999_999)    //time counter count to 2nd sec,LED2 lighten
  •       begin
  •           led <= 4'b0010;                  
  •         end
  •       else if (timer == 32'd149_999_999)   //time counter count to 3nd sec,LED3 lighten
  •           led <= 4'b0100;                                          
  •       else if (timer == 32'd199_999_999)   //time counter count to 4nd sec,LED4 lighten
  •           led <= 4'b1000;                        
  •     end
  •    
  • endmodule
  • 复制代码

       eaf9fa82264f390ef9b66a7b0b0aa3c4.jpg