tag 标签: lx9

相关博文
  • 热度 21
    2013-3-4 22:55
    1894 次阅读|
    0 个评论
             虽然 XC6SLX9 芯片资源比较少,但是嵌一个 microblaze 还是搓搓有余的,这一节就来评测一下在 XC6SLX9 上 microblaze 的配置。          有两种方法配置 microblaze ,一是在 ISE 软件中建立工程,然后以 IP Core 嵌入 microblaze ;而另外一种则是直接打开 XPS 软件,建立一个以 microblaze 为核心的工程。本文中则选第一种方法。          首先打开 ISE 软件,建立工程,然后新建一个 Embeded Processor ,如图 1 所示。 图 1          开始调用 XPS 软件,选择添加 microblaze with BSB ,选择 Avnet Spartan-6 LX9 MicroBorad ,如图 2. 图 2          选择所有支持的外设,包括 CDCE912_I2C 、 DIP_Switch 、 Ethernet 、 LED 、 MCB3_LPDDR 、 SPI_Flash 和 USB_UART ,如图 3 图 3 点击 finish 自动得到整个 microblaze 硬件配置,如图 4 所示 图 4          没显示 ERROR ,关闭 XPS 软件,继续 ISE 界面的操作,首先点击 generate top hdl source, 然后对生成的 .v 或者 .vhd 顶层文件可以进行 synthesize 、 translate 、 map 、 PR ,最后得到的资源耗用如图 5 所示。
  • 热度 22
    2013-3-4 22:51
    1505 次阅读|
    0 个评论
             对 LX9 开发板硬件评测后,从这一节开始真正进入 FPGA 开发的世界。很多开发板的例程中必有跑马灯实验,老跑马也没意思,咱来把新潮的,整一个呼吸灯。          呼吸灯最初是出现在 apple 公司的笔记本产品中,当合上笔记本的时候,笔记本上的睡眠指示灯会出现呼吸状的闪烁,咱人们惊叹于 apple 丰富的想象力之余,之后就有很多公司效仿,并且呼吸灯出现在更多的电子产品中,如鼠标、手机。。。          关于呼吸灯的原理,首先了解一下呼吸的特性,如图 1 中曲线所示,吸气:指数上升曲线,持续约 1.5 秒;吸气:指数曲线下降,持续约 1.5 秒。一般成人平均每分钟呼吸 16~18 次。 图 1          然后再介绍 2 个特性现象:          1. Bloch 定律指出进入人眼的光的积分或维持时间与光的强度光成反比。光源越亮,积分时间越短。显示较亮时,给予人眼以较高的时间敏感度,视觉暂留使人眼看到的连续的光序列。如果亮度变化的频率小于人眼的采样频率,就会感到明显的阶梯式的跳变。          2. 视觉暂留现象,物体在快速运动时,当人眼所看到的影像消失后,人眼仍能继续保留其影像 0.1~0.4 秒左右的图像,这种现象被称为视觉暂留现象。          可以说以上 2 个特性现象能使我们看到的呼吸灯这种视觉艺术,并且这种视觉艺术只有通过电子工程师之后才能创造出来。          下面正式开始艺术创造之旅:          硬件要求 :呼吸灯只需要一个 LED 灯即可, LX9 开发板中有 4 个红色 LED 灯,选其一即可。          呼吸灯的 FPGA 程序设计 :呼吸的效果是通过调节 LED 的暗灭来控制,基本是用 PWM 实现,如果连接 LED 的引脚输出高电平, LED 亮,反之灭的话,高电平的在 PWM 一个周期内的占空比大的话, LED 灯越亮;占空比小, LED 灯越暗。          了解了原理和实现方案,还需要确定一下参数:          LX9 开发板的可用的时钟频率是 40MHz ,初步定 PWM 周期为 0.005 秒,计算得到一个 PWM 周期的时钟周期 Ncycle=40MHz x 0.0005s=200,000 ;如果以 2 秒进行一次呼吸,呼气和吸气分别有 Mtime=200 次可调节 PWM 占空比;占空比调节需要成指数曲线,如图 2 所示,曲线数据存储在 ROM 中,通过 ”./src/e.dat” 文件初始化,共有 201 个数据。 图 2 以下为 Verilog 实现代码: 以下是代码片段: module BreathLed(     input clk_40M,     output reg Led     ); //Time Parameter parameter Ncycle= 200000; //clk 40MHz  ; 1cycle = 200000/40*10^6 = 0.005s parameter Mtime = 200 ; reg cnt=0; reg curHigh=0; reg up=1'b1; reg highcnt; reg rom_q ; initial begin          $readmemh("./src/e.dat",rom_q); end always@(posedge clk_40M) begin          if(cnt==Ncycle-1) begin                    if(up==1'b1) begin                             if(highcnt==Mtime)                                      up=1'b0;                             else                                      highcnt=highcnt+1;                    end                    else begin                             if(highcnt==0)                                      up=1'b1;                             else                                      highcnt=highcnt - 1;                    end                                       curHigh=highcnt * 1000; //linear curve                    //curHigh=rom_q ;                                       cnt=0;          end          else                    cnt=cnt+1;                   if(cnt=curHigh)                    Led=1'b1;          else                    Led=1'b0; end endmodule          如图 3 为 MAP 之后的资源利用情况, 图 3 呼吸灯演示视频如下:
  • 热度 19
    2013-3-4 22:45
    3263 次阅读|
    0 个评论
             这一节评测 LX9 开发板的核心 SPARTAN6 系列 FPGA 芯片 XC6SLX9 ,对其内部结构做一个深层次探究。          表 1 中列出了 XC6SLX9 芯片所含的资源情况,其中几项主要的资源 Slices 1430 个、 DSP48A1 16 个、 Block RAM 18Kb 32 个和 I/O 200 个。在公司用习惯了 K7 这种大型器件,看到 LX9 的资源列表我表示很无语,这么少资源能干啥。但是看着 LX9 开发板上的跑马灯一闪一闪的,貌似正非常鄙视地回复我:别看我资源少,照样能嵌 microblaze 、照样能控制 Ethernet 、照样能 … 表 1          好了,废话不多说,开始探秘 XC6SLX9 ,首先从她的 Slice 开始, Slice 是 XC6SLX9 逻辑资源的基本组成单元,一个 CLB ( Configutable Logic Block )中包含 2 个 Slice 。而 Slice 又分为 2 种: SLICEL 和 SCLICEM ,其中 SCLICEM 比较特殊,不仅可充当普通的逻辑资源,而且可实现分布式 RAM 或者移位寄存器,当 FPGA 设计中需要少量 RAM ,即可采用 SLICEM 实现。          Slice :基本结构如图 1 所示,是由 4 个 6 输入 LUT 、进位链 carry logic 、 8 个 Flip Flop 和复选器 multiplexer 组成。而 SLICEM 中主要是 LUT 比较特殊,可以充当 RAM ,每个 LUT 是 6 输入的,可以实现一个 64 bit 的 RAM ,因此一个 SLICEM 4 个 LUT 最大可实现 256 bit RAM 图 1          DSP48A1 :基本结构如图 2 所示,这个乘法器硬核可实现如( B ± D ) x A ± C 操作,包含利于滤波的预加器 pre-adder ,并且最大支持 18bit x 18bit 的乘法操作。 DSP48A1 是数字信号处理的利器,可惜在 XC6SLX9 里太少了。 图 2          Block RAM :在需要大量数据存储时,可以选择 Block RAM 资源,每块为 18Kb 大小,因此哪怕只用了 1bit 也占用了 1 个 Block RAM 资源。          如图 2 所示为 XC6SLX9 的内部结构图,其中红色竖条块为 Block RAM ,绿色竖条块为 DSP48A1 ,其它大部分为 Slice 资源,整个芯片资源分布非常整齐。 图 3
  • 热度 22
    2013-1-11 14:39
    1588 次阅读|
    0 个评论
             从这一节开始正式的 LX9 开发板评测,首先肯定是硬件的评测工作,如图 1 , LX9 开发板非常精致,可以随身携带,并且其是由 USB 供电,因此工程师可以随时进行板子调试;从元器件的布局上可以看出,在这么小巧的板子上肯定大有内涵, On-board USB-JTAG 、 User LEDs 、 Pmod Headers 、 MicroUSB USB-to-UART 、 10/100 Ethernet 、 LPDDR SDRAM 和 SPI FLASH ,可谓是简约不简单。 图 1          首先做一下准备工作,安装驱动, LX9 开发板有 2 处接口需要安装驱动: MicroUSB USB-to-UART 和 On-board USB-JTAG          1. MicroUSB USB-to-UART 是从 USB 到 UART 的转换,采用的是 Silicon Labs CP2102 芯片解决方案,驱动下载路径: http://www.silabs.com/products/interface/usbtouart/Pages/usb-to-uart-bridge.aspx          驱动安装后,用 USB 线连接 LX9 开发板和 PC ,可以设备管理器中找到开发板的连接,如图 2 所示,占用的是 COM3 端口。 图 2          用串口终端打开 COM3 ,然后复位 LX9 板,在终端显示窗口中打印出了 LX9 开发板的 Boot 信息,如图 3 、 4 图 3 图 4          2. On-board USB-JTAG ,是从 USB 到 JTAG 接口的转换。 JTAG 是调试 FPGA 、下载 BIT 文件的接口,而 LX9 开发板提供了 2 种 JTAG 连接方案,一种就是 USB-JTAG 的转换,通过 USB 即可完成 JTAG 所有的工作;另外一种,就是通过 xilinx 标准的 JTAG 下载线实现,当然 LX9 提供了这个 14-pin 的接口。          既然可以只用 USB 就可以下载调试 FPGA ,当然是得好好利用这个接口了,不然还得随身带着个 JTAG 下载线(这个下载线可比 LX9 板子还要大)。          这个 On-board USB-JTAG 是由 Atmel 公司的 AT90USB162 芯片实现全速率 USB 控制器,并且连接 FPGA 的 JTAG 链上。驱动程序链接: http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,66,768Prod=DIGILENT-PLUGIN ,下载 Digilent Plugin for Xilinx Tools ,不过首先需要安装 Digilent Adept 系统,在 Digilent 官网 上有最新版本的下载。          驱动安装完成之后, LX9 的 USB 口插入 PC ,可在设备管理器中发现 LX9 板,如图 5 、 6 所示。 图 5 图 6          然后打开 ISE 软件验证 USB-JTAG 功能,打开 iMPACT ,能成功初始化 LX9 开发板的 JTAG 链,如图 7 所示 图 7          LX9 开发板的硬件评测就到此,主要是为以后开发配置了硬件,在下几节中会有精彩的功能评测,敬请期待。。。
相关资源