tag 标签: ela

相关博文
  • 热度 13
    2012-2-1 14:44
    2135 次阅读|
    0 个评论
    这里整理了超声波测距的资料和对应的源代码 附件是我的超声波模块的资料 资料.rar 编译器 ICC AVR 下面是源代码: #include #include #include"Mydelay.h" #include"LCD12864.h" //下面是端口声明 #define TRIG_SET PORTC|=(12) ;DDRC|=(12) #define TRIG_CLR PORTC=~(12);DDRC|=(12) #define ECHO_IN  PORTD|=BIT(PD0); DDRD=~BIT(PD0) unsigned int ultrasonic_time=0; //全局变量存放距离,这里虽然是写的时间,实际上是时间转换后的距离 unsigned char tem1[]={"the distance is:"}; //发送触发start信号 void sendsignal(void) {  TRIG_CLR;  delay_nus(1);  TRIG_SET;  delay_nus(15);  TRIG_CLR; } void main(void) {  Init_lcd12864();  LCD128_Clear();  ECHO_IN;  while(1)  //等待ECHO信号响应    TCNT3H = 0x00;    TCNT3L = 0x00;   //定时器T3赋初值    TCCR3B = 0x02;    //内部晶振8M,进行8分频,那么最远的测距理论上为65536*0.17    //这个距离已经超出了实际测距,所以定时器T3不会溢出    while(PIND0x01); //等待ECHO信号响应结束    ultrasonic_time=(unsigned int)TCNT3*0.17;    //根据定时器的值计算距离的公式    TCCR3B = 0x00;//关闭定时器T3        //下面是将数据显示    send_str_16c8s(0,0,tem1);    LCD128_print_int(15,5,ultrasonic_time);    delay_nms(50);  } } 上面的LCD12864显示文件这里不写出来了,大家自己把数据显示出来就行了。      
  • 热度 10
    2011-11-25 15:24
    2030 次阅读|
    0 个评论
    Signal Tap II有助于观察逻辑内部信号行为,可使不借助外部设备进行设计调试。(当然使用的前提条件是有硬件平台) Signal Tap II ELA 组成框图 采样获得的数据会存储在器件的存储器块中,通过JTAG下载线可以把数据传回Quartus 中进行波形显示。 可以设置数据采集缓冲器(Buffers)的大小、数据采集方式和存储方式、以及此Buffer的存储器类型。 可以在一片FPGA上生成多个ELA,这一功能非常适合在设计中为每个时钟域配备一个分析仪。 ELA可以计算每个实例用到的逻辑资源和存储器资源,并显示在实例管理器中。   要使用Signal Tap II ELA,必须对其进行配置: 1 设置采样时钟。 ELA只能在采样时钟的上升沿采样数据,可以使用设计中的任何信号作为采样时钟(推荐使用全局的与被测信号同步的非门控信号)。 采样时钟决定了信号波形的分辨率,它的频率要大于被测信号的最高频率。 2 设置被测信号。 可以分配两种信号(通过Node List信号设置触发条件): Pre-Synthesis:设计拟定之后,综合优化之前的信号,反映RTL级信号。(RTL Viewer) Post-fitting : 物理综合优化和布局布线后的信号(Technical Map Viewer) 为了可以使用增量编译,建议不要混合使用两种信号;若使用了预综合信号则要采取信号保留(Signal Preservation)措施。 不可测试引脚:Post-fit输出引脚、进位链信号、JTAG控制信号、ALTGXB宏功能信号、LVDS信号(串行/解串器块的数据输出)、DQ/DQS信号。 3 设置采样深度。 代表每个信号的采样数量,即采样Buffer大小。还可以选择采样Buffer的RAM类型,如M4K、M512、M_RAM等。 被测信号波形的时间长度为t,则t = N × T. N为Buffer存储的采样点数(采样深度),T为采样时钟周期。 4 设置 Buffer 的采样模式。 段式Buffer:被分成多个大小相同的Buffer,每个Buffer都是独立的FIFO,并有各自的触发条件。每次采集过程中只有一个Buffer可用,其工作方式与非段式Buffer一样。(常用来检测较少出现的重复事件) 非段式Buffer(循环Buffer):ELA把整个存储器当做一个FIFO,连续存入数据。(非段式存储可以使用存储资格(Store Qualification:5种可选方式)功能滤掉与设计无关的采样值) 5 设置触发条件。 基本触发条件:触发模式有 Don’t Care、Low、High、Falling Edge、Rising Edge、Either Edge 等,可以设置位信号和总线信号。 高级触发条件:图形编辑。 两种触发条件流程控制机制:顺序触发(Sequential Triggering)和自定义基于状态触发(Custom State-Based Triggering)。其中顺序触发最多支持10级触发,最后一个触发条件满足时开始采样。(如图示,n = 10) 6 设置触发位置。 三个触发位置: Pre-Trigger 保存触发后的数据(12%pre-trigger, 88% post-trigger) Center-Trigger 保存Pre-Trigger 和 Post-Trigger数据各50% Post-Trigger 保存触发前的数据(88%pre-trigger, 12% post-trigger)。 7 设置外部触发 。 Trigger in:用外部信号源(输入信号或其他内部信号)触发一个ELA,触发级别最高(Level 0)。 Trigger out: ELA可以提供触发外部逻辑或其他ELA的信号输出。   配置完成后,进行编译下载并运行Signal Tap II ELA。 触发条件满足时,就开始采样数据,数据会被存储在存储缓冲区然后通过JTAG送到 .stp 文件进行波形显示。 现以一个正弦函数发生器举例说明Signal Tap II的简单实用。 A、 首先创建一个.MIF或者.HEX文件来载入正弦波的数据(可用C程序得到具体数值)。再用MegaWizard Plug-In Manager建立一个ROM元件来存储正弦波的数据,得到此ROM的源文件。再完成顶层的源文件编写及引脚配置,正确编译。 B、 新建Signal Tap 文件,更改实例名为Sin wave。如下图所示: C、 最重要的便是对这一实例的配置步骤: 在Setup面板中,添加被测信号Q(ROM地址信号)和data_out(正弦波输出信号),设置采样时钟,采样深度,RAM类型,触发条件,触发位置等。保存并添加到工程,编译下载即可采集数据并在data面板中观察采样信号(显示形式有数制、柱状和线型)。且此时列所耗费的LE和RAM资源在上图的Instance Manager中有列出。 D、 下面主要说明触发条件的不同对采集数据的影响。(触发位置都为Center - Trigger)。 令在Q.5=1的时候触发,即: 可得波形如下所示,可知触发采集点为Q=32: 条件改为 2级触发 时,即: 所的波形为,可知触发采集点为data_out=255: 比较两图可知,采集数据的触发点为满足最后一级触发条件时刻,这也验证了了顺序触发的原理。   这只是ELA的简单实用,更多高级功能还需进一步学习使用。 博客园连接:http://www.cnblogs.com/chenwu128/archive/2011/11/24/2262458.html