- 博客(40)
- 资源 (13)
- 收藏
- 关注
转载 verilog分频器代码
<br />偶数倍分频:偶数倍分频应该是大家都比较熟悉的分频,通过计数器计数是完全可以实现的。如进行N倍偶数分频,那么可以通过由待分频的时钟触发计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。以此循环下去。这种方法可以实现任意的偶数分频。module odd_division(clk,rst,count,clk_odd);<br /> input clk,rst;<br /> output clk_odd;<br
2010-07-30 15:56:00 2122
转载 verilog 层次化设计的简单问题 -- 如何调用底层模块
<br />假设三个模块module top_m, bottom1_m, bottom2_m 分别存在于三个文件top.v, bottom1.v, bottom2.v 请问我要在top_m 模块内调用两个底层模块bottom1_m, bottom2_m 如何实现,如何链接? 实现后是否可综合?<br />请教各位大侠了!……<br /> <br />在Verilog中,调用底层模块的语法结构为:<br /> 底层模块名 实例名 参数定义<br />比如在top_m里,如果已经全部源文件加到了同一
2010-07-30 11:33:00 3451
原创 如何解決Nios II的Timestamp不match的錯誤訊息
<br />有時候Nios II會出現以下惱人的錯誤訊息:Using cable "USB-Blaster [USB-0]", device 1, instance 0x00<br />Pausing target processor: OK<br />Reading System ID at address 0x01101038: <br /> ID value does not match: read 0xFFFFFFFF; expected 0x4AE5D5A2<br /> Timesta
2010-07-29 16:45:00 1985
转载 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 767
转载 Verilog assign和always 注意事宜
<br />assign用于描述组合逻辑<br />always@(敏感事件列表) 用于描述时序逻辑<br />敏感事件上升沿 posedge,下降沿 negedge,或电平<br />敏感事件列表中可以包含多个敏感事件,但不可以同时包括电平敏感事件和边沿敏感事件,也不可以同时包括同一个信号的上升沿和下降沿,这两个事件可以合并为一个电平敏感事件。<br />在新的verilog2001中“,”和“or”都可以用来分割敏感事件了,可以用“*”代表所有输入信号,这可以防止遗漏。<br />合法的写法:<br /
2010-07-29 13:20:00 724
转载 SVGA
概述定义<br /> SVGA即高级视频图形阵列(Super Video Graphics Array或Super VGA或SVGA),由VESA为IBM兼容机推出的标准。分辨率为800x600(每像素4比特,16种颜色可选)。 特性<br /> SVGA,属于VGA屏幕的替代品,最大支持800×600分辨率,屏幕大小为12.1英寸,由于像素较低所以目前采用这一屏幕的笔记本也很少了。 <br /> 肉眼对颜色的敏感远大于分辨率,所以即使分辨率较低图像依然生动鲜明。VGA由于良好的性能迅速开始流行,厂商
2010-07-28 14:08:00 832
转载 触摸屏原理
<br />随着多媒体信息查询的与日俱增,人们越来越多地谈到触摸屏,因为触摸屏不仅适用于中国多媒体信息查询的国情,而且触摸屏具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。利用这种技术,我们用户只要用手指轻轻地碰计算机显示屏上的图符或文字就能实现对主机操作,从而使人机交互更为直截了当,这种技术大大方便了那些不懂电脑操作的用户。<br /> 触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏在我国的
2010-07-27 12:00:00 825
转载 [E Design]关于(触摸屏)外部中断去抖动的方法
<br />(触摸屏)外部中断会有抖动,如果不消除会导致读出数值的不准确。<br />去抖动分为上升沿和下降沿两个阶段。假设外部中断是上升沿的,进中断以后要延时一段时间,大约10ms,然后再开始读数据。读完数据以后,看中断引脚是不是为1,直到为0,再延时10ms,出中断。
2010-07-27 09:32:00 798
转载 如何解决触摸屏抖动问题
<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 1791
转载 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 521
转载 建立带SDRAM的NIOS II系统
<br />最近一个星期,用EP1S20这个FPGA嵌入NIOS2,研究了一下FLASH和SDRAM的驱动,最后终于是好用了,但中间遇到了不少曲折,现在就把我的一些经验分享给大家,希望大家以后在这方面不要走弯路。<br /><br /> 首先,先提一个名词--SOPC.任何一本关于FPGA嵌入式的书籍都会有的一个名词,翻译过来是“片上可编程系统”。也就是说我们在用FPGA作嵌入式 的时候其实相当于自己根据自己的需要作一个处理器,这个处理器的内核就是NIOS2处理器,而外围可以根据自己的需要添加我们需要的任
2010-07-23 15:48:00 695
转载 什么是DMA
什么是DMA? DMA(Direct Memory Access),即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。 利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。 在DMA传送开始的短暂时间内,基本上有两个处理
2010-07-22 16:16:00 945
转载 DLL
Visual C++DLL编程实现一、前言 自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中、Windows编程所需要的大量的API函数也被包含在Kernel DLL中。 在Windows操作系统中使用DLL有很多优
2010-07-22 16:01:00 368
转载 typdef的理解
看来自己以前对typdef的理解是错误滴,还是自己不求甚解。今天终于搞明白了。<br /> 首先看如下语句: typedef int INT; typedef int a[10]; typedef void (*p)(void);<br /> 如果你能立马反应出来上述三种含义的话,说明你已经理解了,再看先去是浪费时间。 <br /> 对于以上的语句,有人可能会说INT是int的别名嘛,好简单。有这
2010-07-22 11:24:00 492
转载 BMP图象格式
简介位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap,DDB)文件格式。Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(device-independent bitmap,DIB)格式,目的是为了让Windows能够在任
2010-07-22 09:59:00 450
转载 Unicode字符
<br />Unicode字符是ASCII字符编码的扩展。在ASCII中,每个字符用7位表示,而Unicode是完全的16位编码字符形式。这样,就使Unicode可以把世界上所有的书写语言都在计算机中用字符的形式表示出来。Unicode影响到了计算机业的方方面面,其中对操作系统和基于其上的编程语言的影响最大。Unicode的出现动摇了ASCII字符在计算机中的支配地位,而Unicode最终取代ASCII是整个计算机界正在努力实现的目标。<br /> 在Windows操作系统中,基于NT内核的系统是从底层
2010-07-20 11:38:00 493
转载 FAT文件系统原理(四)
★FAT16存储原理: 当把一部分磁盘空间格式化为fat文件系统时,fat文件系统就将这个分区当成整块可分配的区域进行规划,以便于数据的存储。一般来讲,其划分形式如图7所示。我们把FAT16部分提取出来,详细描述一下: FAT16是Microsoft较早推出的文件系统,具有高度兼容性,目前仍然广泛应用于个人电脑尤其是移动存储设备中,FAT16简单来讲由图4.3.11所示的6部分组成(主要是前5部分)。引导扇区(DBR)我们已经说过,FAT16在DBR之后没有留有任何保留扇区,其后紧随的便是
2010-07-20 11:24:00 621
转载 FAT文件系统原理(三)
4.3 FAT表和数据的存储原则。 FAT表(File Allocation Table 文件分配表),是Microsoft在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。但FAT表的表示方法却与目录有很大的不同。 在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理。单击此处查看PDF版全文
2010-07-20 11:19:00 615
转载 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 505
转载 FAT文件系统原理(一)
一、硬盘的物理结构: 硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片
2010-07-20 11:01:00 337
原创 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 410
原创 C语言中使用面向对象
<br />为什么要用面向对象?<br />面向过程方式开发的系统,代码复杂,耦合性强,难以维护,随着我们所要解决的问题越来越复杂,代码也变得越来越复杂,越来越难以掌控,而面向对象改变了程序员的思维方式,以更加符合客观世界的方式来认识世界,通过合理的运用抽象、封装、继承和多态,更好的组织程序,从而很好地应对这种复杂性。<br /><br />为什么不直接使用C++?<br />C语言以其简洁明快,功能强大的特点,深得开发人员的喜爱,尤其是在嵌入式开发领域,C语言更是占据了绝对老大的地位。<br /><br
2010-07-16 19:01:00 382
原创 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 581
转载 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 5280 3
转载 如何徹底刪除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 693
转载 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 1269
转载 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 1944 4
转载 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 3268
转载 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 991
转载 烧写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 1146 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 844
原创 sof 转 bin 和 elf 转bin
nios2-elf-objcopy -I srec -O binary firmware.flash firmware.bin
2010-07-01 21:41:00 2803
转载 关于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 1467 1
转载 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 1955 1
原创 [转载]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 764
转载 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 3017 2
转载 Error: Node instance "xxx" instantiates undefined entity "xxx"
<br />PWM是系统中的自定义外设,在之后重新编译工程的时候出现了这个错误,然后定制了一遍外设,编译顺利通过。
2010-07-01 15:04:00 21934 1
原创 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 1152
原创 字符反转
char reverse_bits(char c){ int i; char newc = 0x00; for(i=0;i>= 1 ; } return newc;}
2010-07-01 12:05:00 412
DE0_PWM_LED verilog source code
2011-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人