FPGA/SOPC
平平谈谈才是真
这个作者很懒,什么都没留下…
展开
-
【转载】SDRAM控制器软核的Verilog设计:对理解SDRAM操作很有帮助
目前,在很多通信芯片及系统的开发中,常常需要用到存储容量大、读写速度高的存储器。在各种随机存储器件中,SDRAM 的价格低、体积小、速度快、容量大,是比较理想的器件。但是,与SRAM相比较,SDRAM的控制逻辑复杂,使用很不方便。为了解决这个矛盾,需要设计专用的SDRAM控制器,使系统用户象使用SRAM一样方便的使用SDRAM是十分必要的。考虑到控制器的通用性,本文提出了一种通用的SDRAM控制器转载 2010-03-13 23:09:00 · 1484 阅读 · 0 评论 -
嵌入式开发
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top转载 2010-04-12 18:23:00 · 713 阅读 · 0 评论 -
An example of (NIOS) EPCS Remote Update through UART
An example of (NIOS) EPCS Remote Update through UARTHere is presented a method, that explains how to configure EPCS remotely using UART. An example was taken from my existing project and not designed to specially for description how to do.At first place th转载 2010-06-25 14:46:00 · 2206 阅读 · 0 评论 -
Flash外部配置器件在SOPC中的应用
1 Flash在SOPC中的作用 <br /> Flash在SOPC中的作用主要表现在两方面:一方面,可用Flash来保存FPGA的配置文件,从而可以省去EPCS芯片或解决EPCS芯片容量不够的问题。当系统上电后,从Flash中读取配置文件,对FPGA进行配置。另一方面,可用Flash来保存用户程序。对于较为复杂的SOPC系统,用户程序一般较大,用EPCS来存储是不现实的。系统完成配置后,将Flash中的用户程序转移到外接RAM或片内配置生成的RAM中,然后系统开始运行。 <br /> 2 Flash编程转载 2010-06-29 11:27:00 · 741 阅读 · 0 评论 -
配置ALTERA_FPGA
先建一个工程,这个工程主要是为了验证FPGA的配置。 ALTERA 的FPGA配置有两种方式: 一种是在线配置方式,即用.SOF(SRAM Object File)文件来配置FPGA。这种方式断电后数据就消失。 另一种是通过EPCS来配置FPGA。在这种方式下,我们要先把FPGA的配置数据下载到EPCS存储器中,这里有三种方式,可以进行,本文只讲两种,后一种在以后的博文中会体现。 先写用.SOF文件在线配置FPGA。 工具 EP2C8Q208C8N SDRAM EPCS4 CFI Flash QUTARTU转载 2010-06-29 13:50:00 · 1049 阅读 · 0 评论 -
sof和pof配置文件
<br /> Altera公司的Quartus II开发工具可以生成多种配置或编译文件,用于不同配置方式。对于不同的目标器件,编译后开发工具会根据指定的FPGA器件自动生成.sof(SRAM Object File)和.pof(Programmer Object File)配置文件。.sof配置文件是由下载电缆将其下载到FPGA中的,在JTAG下载方式和PS方式(Passive Serial)对应sof配置文件。在使用.sof文件配置时,Quartus II下载工具将控制整个配置顺序,并为配置数据流内自动插转载 2010-06-29 14:55:00 · 4599 阅读 · 2 评论 -
sof2flash and elf2flash
ProblemHow do I program an EPCS device with a SOF file and Nios® II ELF file using the Quartus® II Programmer?SolutionThe steps needed to generate an EPCS programming file are as follows: Open the Nios II Command Shell (Nios II SDK Shell for pre-6.0 versio转载 2010-06-29 21:15:00 · 2868 阅读 · 3 评论 -
NIOS II常用函数详解[转]
<br />IO操作函数<br />函数原型:IORD(BASE, REGNUM) <br />输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量<br />函数说明:从基地址为BASE的设备中读取寄存器中偏移量为REGNUM的单元里面的值。寄存器的值在地址总线的范围之内。<br />返回值: -<br /><br />函数原型:IOWR(BASE, REGNUM, DATA)<br />输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量,DATA为要写入的数据<br />函数原创 2010-07-01 14:43:00 · 1160 阅读 · 0 评论 -
sof 转 bin 和 elf 转bin
nios2-elf-objcopy -I srec -O binary firmware.flash firmware.bin原创 2010-07-01 21:41:00 · 2899 阅读 · 0 评论 -
NIOS II 软核中EPCS配置芯片的存储操作
最近用CYCLONE FPGA做的视频图像叠加板需要存储一些用户配置信息,而EPCS4配置芯片除了存储FPGA配置信息和NIOS II程序外,还有很多存储空间剩余未使用,刚好可以用来做用户配置信息存储。折腾了挺长时间,看了不少文档,都只是提到可以用ALTERA提供的HAL函数来调用EPCS相关的函数。最后只能硬着头皮看“altera_avalon_epcs_flash_controller.c”函数(路径为://altera/72/ip/sopc_builder_ip/altera_avalon_epcs_转载 2010-06-29 09:33:00 · 1340 阅读 · 0 评论 -
FPGA EPCS烧写及NiosII Flash烧写过程
<br />简述Altera CycloneII FPGA EP2C35F672C8的EPCS16的 AS(Active Serial主动配置)的配置方法及将NiosII用户程序下载到CFI_Flash的基本方法。<br />1.FPGA SopcBuilder的基本配置。<br />QuartusII->New Project Wizard->uart_test->Sopc Builder<br />->添加以下IP核(三态桥和CFI之间的控制总线需要手动连接)<br /><br />->设置NiosII转载 2010-06-29 11:01:00 · 1982 阅读 · 0 评论 -
SOF 转换 JIC (转)
JTAG方式配置EPCS芯片的方法<br />原文步骤是英文的,翻译了一下,不过我试了,好象有问题,选EPCS1芯片它说容量不够,<br />以下为原文:<br />//------------------------------------------------------------------------------------------------------------<br />用JTAG模式配置Serial Flash芯片 作者 [ 抽烟的鱼 ]<br />发表时间 [ 2005-转载 2010-06-29 20:46:00 · 1505 阅读 · 0 评论 -
Nios II中简单的按键中断程序
<br />1#include <stdlib.h><br /> 2#include <io.h><br /> 3#include "sys/alt_irq.h"<br /> 4#include "altera_avalon_pio_regs.h"<br /> 5#include "system.h"<br /> 6#ifdef PIO_BUTTON_BASE<br /> 7/**//* 按键中断服务程序*/<br /> 8static void handle_button_interrupt原创 2010-06-30 09:37:00 · 927 阅读 · 0 评论 -
Error: Node instance "xxx" instantiates undefined entity "xxx"
<br />PWM是系统中的自定义外设,在之后重新编译工程的时候出现了这个错误,然后定制了一遍外设,编译顺利通过。转载 2010-07-01 15:04:00 · 22213 阅读 · 1 评论 -
fpga编译问题解决
Error: Node instance " " instantiates undefined entity " ".今天在编译verilog的代码时,碰到了这个问题,后来检查发现,是自己在工程中只加入了顶层文件,而没有加入底层文件。我用的是quantus 进行编译,解决方法就是先找到所有的底层文件,在quantus的工具栏的file -->open,打开所有文件,然后在project——>add current file to project,重新编译即可。 Error: Net "rea转载 2010-07-01 15:05:00 · 3123 阅读 · 2 评论 -
quartus 生成pof的设置
在assignments -- device -- device and pin option, 在configuration 选项卡当中,要勾上Use Configuration device,并选择好配置芯片。选择configuration scheme为Active Serial原创 2010-06-29 14:47:00 · 5722 阅读 · 0 评论 -
[转载]Quartus常见错误
<br />1.Found clock-sensitive change during active clock edge at time <time> on register "<name>"<br /> 原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化的。其后果为导致结果不正确。<br /> 措施:编辑vector source file<br /> 2.Verilog HDL assignmen原创 2010-07-01 16:13:00 · 786 阅读 · 0 评论 -
NIOS II Boot
<br />1、概述<br />NiosII 的Boot过程要经历两个过程:<br />(1)FPGA器件本身的配置过程:FPGA器件在外部配置控制器或自身携带的配置控制器的控制下配置FPGA的内部逻辑。如果内部逻辑中使用了NiosII,则配置完成的FPGA中包含有NiosII软核CPU。<br />(2)NiosII本身的引导过程:FPGA配置成功后,NiosII被逻辑中的复位电路复位,从reset地址开始执行代码。NiosII的reset地址可以在SOPC builder的“NiosII More‘CP转载 2010-07-01 18:06:00 · 1968 阅读 · 1 评论 -
关于elf和bin文件?
问题:斑竹说download到flash里的是bin文件,但我如果把debug目录下的elf文件删掉只保留bin文件就无法download到flash里面,这是怎么回事啊?而且我一般不会去用elf2bin专门生成bin文件,那么每次download的bin文件是程序自动生成的吗?elf文件在什么地方用? 回答:实际上在电路板上运行的肯定是二进制指令文件,也就是Bin;elf包含调试信息和bin文件内容;您在工程设置中如果设置的下载文件是elf文件,IDE自动将它转换为bin后下载,如果是bin转载 2010-07-01 20:49:00 · 1494 阅读 · 1 评论 -
烧写NIOS II的uClinux内核映像到Flash中
<br />最好是在Linux下装linux版的quartus II和nios II ide,这样方便是把所有uClinux的开发移植工作都放在Linux下做.因为只用到NIOS2EDS的下载和烧写功能,我只装了没破解的quartus和nios2eds,安装后一般需要手动配置一下,主要是对环境变量的修改,以便于shell可以找到我们要用的命令和相应的动态库.<br /> (1)先把内核映像转换成可以直接烧到flash的文件,用以下命令:<br />elf2flash --input=zImage --ou转载 2010-07-02 09:22:00 · 856 阅读 · 0 评论 -
烧写flash遇到"no cfi table found"错误总结
<br />在nios2平台下,在NiosII Command shell使用nios2-flash-programmer命令烧写flash时容易出现“no cfi table found”的错误,可能以下几种原因造成的:<br />1.地址搞错,指定的地址不是flash的起始地址;<br />2.参数设置错误,在SOPC Builder中检查CFI Flash的设置参数,如timing选项卡容易漏掉设置。<br />3.设计有问题,Flash的地址线或数据线搞错了(把数据总线的传输方向置为输出output转载 2010-07-02 10:57:00 · 1190 阅读 · 1 评论 -
NIOS按键中断程序
/* 按键一次,数码管加一循环显示 */<br />#include <stdlib.h>#include <io.h>#include "system.h"#include "sys/alt_irq.h"#include "altera_avalon_pio_regs.h"<br />/* 地址list */#define PIO_KEY_BASE 0x01002000#define PIO_HEX_BASE 0x01002010#define PIO_KEY_IRQ 1/* 全局变量 存储按键次数 */转载 2010-07-02 15:59:00 · 1002 阅读 · 0 评论 -
Quartus II 各个版本下载
<br />ftp://ftp.altera.com/outgoing/release/91sp2_quartus_windows.exe 2.12GB<br /><br />ftp://ftp.altera.com/outgoing/release/91sp2_nios2eds_windows.exe 13MB<br /><br />ftp://ftp.altera.com/outgoing/release/91sp2_dsp_builder_windows.exe 77MB<br /><转载 2010-07-04 12:34:00 · 3379 阅读 · 0 评论 -
FPGA配置文件和NIOS代码程序写入EPCS
如果要把FPGA程序和NIOSII 软件程序都放在EPCS中,必须做如下设置.但首先必须知道,程序代码是放在EPCS中,但真正运行一般是在SDRAM /ONCHIP.RAM中.的第一:SOPC 中的RESET ADDRESS设置为EPCES的BASE ADDRESS,这表示全部软件程序放在EPCS中. EXCEPTION ADDRESS选择ONCHIP_RAM或者SDRAM 之类,表示系统异常处理代码存放在这些地方.第二:在NIOS IDE 中的设置,TEXT ADDRESS指向你程序运行的地方,如ONC转载 2010-07-05 17:56:00 · 1956 阅读 · 4 评论 -
NIOS中各程序存储器的关系
<br /> 在FPGA开发板上都有几种不同的存储器,比如SDRAM,FLASH,EPCS,还有内部onchip memory,这几种存储器间是如何通信或者构建一个系统。该如何搭配他们呢,不少人都问到这个问题。在这里我做个总结以方便初学者的学习。 <br /> 首先看看在sopc builder中reset address和nios IDE中System Library中的program memory(.text)、read-only data memory(.rodata)等<br />这几个地址的关转载 2010-07-05 23:02:00 · 1285 阅读 · 0 评论 -
如何徹底刪除SOPC Builder所遺留下的code? (SOC) (SOPC Builder) (Nios II)
<br />Abstract<br />初學者學習SOPC Builder時,會發現儘管我在SOPC Builder移除了某些ip,但project內仍殘留該ip的code,隨著時間日積月累,垃圾code越來越多,想刪除又怕誤刪了不該刪的code,該怎麼解決這個問題呢?<br />Introduction<br />Quartus II的project中檔案很多,已經為人所詬病,但最少每個module是自己寫的,該不該刪除自己很清楚,但加入Nios II與SOPC Builder後,檔案眾多的問題則更雪上加转载 2010-07-12 11:49:00 · 708 阅读 · 0 评论 -
Pausing target processor: not responding
<br />ProblemUsing cable "USB-Blaster [USB-0]", device 1, instance 0x00. Pausing target processor: not responding. Resetting and trying again: FAILED. Leaving target processor paused<br />Solution<br />These errors indicate a communication failure between转载 2010-07-12 19:52:00 · 5340 阅读 · 3 评论 -
sopc demo 快速porting
对于一个带有sopc的demo,一般真正需要的文件是比较少的。现在有一个demo project, project的名字为:DE0_LED, SOPC名字为:DE0_SOPC (基于Terasic的DE0)假设我们porting目标为: project name :DE1_LED, SOPC name : DE1_LED (基于Terasic的DE1)porting步骤如下:1. 新建一个工程,命名为:DE1_LED2. 拷贝DE0_SOPC.sopc文件,修改相应的参数,并重命名原创 2010-07-15 09:49:00 · 587 阅读 · 0 评论 -
FAT文件系统原理(一)
一、硬盘的物理结构: 硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片转载 2010-07-20 11:01:00 · 343 阅读 · 0 评论 -
FAT文件系统原理(二)
四、FAT分区原理。先来一幅结构图: 现在我们着重研究FAT格式分区内数据是如何存储的。FAT分区格式是MICROSOFT最早支持的分区格式,依据FAT表中每个簇链的所占位数(有关概念,后面会讲到)分为fat12、fat16、fat32三种格式"变种",但其基本存储方式是相似的。 仔细研究图7中的fat16和fat32分区的组成结构。下面依次解释DBR、FAT1、FAT2、根目录、数据区、剩余扇区的概念。提到的地址如无特别提示均为分区内部偏移。4.1 关于DBR. DBR区(DOS BOO转载 2010-07-20 11:14:00 · 513 阅读 · 0 评论 -
FAT文件系统原理(三)
4.3 FAT表和数据的存储原则。 FAT表(File Allocation Table 文件分配表),是Microsoft在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。但FAT表的表示方法却与目录有很大的不同。 在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理。单击此处查看PDF版全文转载 2010-07-20 11:19:00 · 651 阅读 · 0 评论 -
Application Selector Principle
<br />Application Selector is an application in Altera Neek. It is very beautiful.<br />Application Selector 设计原理:<br />Application Selector 的软硬件放在EPCS中,(注:软硬件可能通过各自转成化bin,再合并起来)<br />Demo的软件是放在FLASH中,从0x0开始存放。Demo的硬件是放在EPCS中,从0x400000处开始存放。Demo的软硬件都是最终的bi原创 2010-07-20 10:26:00 · 419 阅读 · 0 评论 -
FAT文件系统原理(四)
★FAT16存储原理: 当把一部分磁盘空间格式化为fat文件系统时,fat文件系统就将这个分区当成整块可分配的区域进行规划,以便于数据的存储。一般来讲,其划分形式如图7所示。我们把FAT16部分提取出来,详细描述一下: FAT16是Microsoft较早推出的文件系统,具有高度兼容性,目前仍然广泛应用于个人电脑尤其是移动存储设备中,FAT16简单来讲由图4.3.11所示的6部分组成(主要是前5部分)。引导扇区(DBR)我们已经说过,FAT16在DBR之后没有留有任何保留扇区,其后紧随的便是转载 2010-07-20 11:24:00 · 676 阅读 · 0 评论 -
什么是DMA
什么是DMA? DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。 利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。 在DMA传送开始的短暂时间内,基本上有两个处理转载 2010-07-22 16:16:00 · 970 阅读 · 0 评论 -
SDRAM使用总结
<br />1,SDRAM的地址线, <br /><br />在我们一般用的什么SRAM啊,PSRAM啊,RAM啊,一般而言都是有多少根地址线,然后可以算出寻址空间,比如有11根地址线,那寻址空间就是2的11次方减1。但是SDRAM是分列地址和行地址的,行、列地址线是复用的,所以有时候我们看到说寻址空间有多大多大,但是看看地址线怎么就那么几根啊,呵呵。SDRAM一般还有2根BANK的线,分成4个BANK,在有的处理器的SDRAM控制模块中,这两根线可能映射到地址线的某两根去。一般芯片常按照以下方式写芯片的配转载 2010-07-23 15:49:00 · 527 阅读 · 0 评论 -
建立带SDRAM的NIOS II系统
<br />最近一个星期,用EP1S20这个FPGA嵌入NIOS2,研究了一下FLASH和SDRAM的驱动,最后终于是好用了,但中间遇到了不少曲折,现在就把我的一些经验分享给大家,希望大家以后在这方面不要走弯路。<br /><br /> 首先,先提一个名词--SOPC.任何一本关于FPGA嵌入式的书籍都会有的一个名词,翻译过来是“片上可编程系统”。也就是说我们在用FPGA作嵌入式 的时候其实相当于自己根据自己的需要作一个处理器,这个处理器的内核就是NIOS2处理器,而外围可以根据自己的需要添加我们需要的任转载 2010-07-23 15:48:00 · 716 阅读 · 0 评论 -
如何解决触摸屏抖动问题
<br />买了idea6410回来发现触摸屏有点抖动,后来和网友交流,说他们用官方的BSP不会抖动,我要了他们的BSP来比较,发现没有区别,这样基本就确定了是供电原因,所以要用软件的方法解决,后来CSDN刚好有人发帖,harktrip 老兄就贡献了自己的经验,多谢他,我还没有时间尝试,先发到我们网站给同志们一个参考;<br />原帖地址http://topic.csdn.net/u/20090904/14/266859b0-3033-4cb5-96ec-f4f2a9c86dd5.html?seed=187转载 2010-07-27 09:28:00 · 1820 阅读 · 0 评论 -
[E Design]关于(触摸屏)外部中断去抖动的方法
<br />(触摸屏)外部中断会有抖动,如果不消除会导致读出数值的不准确。<br />去抖动分为上升沿和下降沿两个阶段。假设外部中断是上升沿的,进中断以后要延时一段时间,大约10ms,然后再开始读数据。读完数据以后,看中断引脚是不是为1,直到为0,再延时10ms,出中断。转载 2010-07-27 09:32:00 · 808 阅读 · 0 评论 -
触摸屏原理
<br />随着多媒体信息查询的与日俱增,人们越来越多地谈到触摸屏,因为触摸屏不仅适用于中国多媒体信息查询的国情,而且触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。利用这种技术,我们用户只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直截了当,这种技术大大方便了那些不懂电脑操作的用户。<br /> 触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏在我国的转载 2010-07-27 12:00:00 · 856 阅读 · 0 评论 -
verilog reg 与 wire
reg 与 寄存器实际上应该反过来讲:- 如果要综合寄存器,需要同时满足俩个条件: 1。定义为reg, 2. 在always @posedge(negedge) block中赋值- 如果要综合组合逻辑,可以(任意) a. 定义为wire, 用assign赋值 b. 定义为reg, 只在always @(a b c d) block中赋值在verilog语言中的reg 类型只是语法意义上。reg类型的变量不能通过assign赋值,而wire类型的变量转载 2010-07-29 13:23:00 · 820 阅读 · 0 评论