fpga dds 源代码小游戏代码中的运行问题,下面的错误提示该怎么办

低成本人机交互设计:基于FPGA的体感游戏
> 低成本人机交互设计:基于FPGA的体感游戏
低成本人机交互设计:基于FPGA的体感游戏
体感游戏是视觉与本体感觉和动作控制的集合,伴随着虚拟现实技术的迅猛发展,正逐步走入市场。为了达到视觉、运动相结合的目的,采用加速度传感器与VGA显示器相结合的方法,通过戴有速度手套的手的运动来完成对游戏界面中的滑块控制,接住随机下落的方块而获得分数。最后进行了板级测试,实现了开机界面、模式切换、难度调节、计分、游戏暂停与重新开始等功能。通过验证,游戏获得了较好的互动性、参与感与沉浸感。本文引用地址:计算机游戏领域已经到了一个同质化相当严重的时代。机械性的重复相同的动作致使玩家的兴趣越来越低。而现在游戏产业迎来了一个转折点,开始向交互性、置入感等方向发展。而良好的沉浸感要求游戏必须在互动性上有创新。过去,游戏大部分是通过键盘与鼠标来完成控制的,但随着传感器技术、微机视觉的进步,使得利用自己的行动来对机器发出指令的愿望得以实现。这种人机互动模式以更为自然性、直观性的运动、语音等摸式代替电脑的键盘和鼠标等外设。现在已经有了很多创新成果,如三维摄像机、传感器球拍、数据手套等。一些公司也推出了各种平台,如日本任天堂公司的Wii、微软的Kinect、华硕的Xtion等。这些设备一般较为昂贵,本文设计目的是低成本来完成人机交互,利用FPGA作为主控制器,借助现代家庭较为普及的电脑的显示器,实现体感游戏的设计,提高游戏的沉浸感与趣味性,同时保持了对于键盘操作的兼容性。1 系统设计方案该系统主要由两个部分组成,分别是数据采集单元、显示控制单元。数据采集单元主要实现对运动控制信息的采集、数据的修正与处理、上传到显示控制单元等功能。显示控制单元主要实现游戏的开始、难度设定、模式切换、显示等功能。整体框图如图1所示。图1 系统整体框图1.1 数据采集单元数据采集单元主要包括从控制器、加速度传感器、LED显示、按键、串口四个硬件部分。各部分的选择和功能如下:从控制器选用STC89C51单片机,此系列单片机是宏晶科技推出的新一代超强抗干扰、低功耗、高性价比的单片机,指令代码完全兼容传统8051单片机,并且有LQFP封装,使得速度手套可以做到小型化。加速度传感器选用的是ADXL345。它是一款完整的3
轴加速度测量系统。既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。本设计中利用了其测静止加速度的功能,得到倾斜角度,从而产生控制指令。采集单元中用了两个LED灯,用于显示当前速度手套的输出状态:当左侧灯亮说明发出的控制信号为向左运动。两个按键输入用于游戏的控制信号暂停和分数清零的信号的产生。采集单元利用串口将控制信号上传到显示控制单元。RS232是由电子工业协会(Electronic Industries
Association,EIA)所制定的异步传输标准接口。在低通信速率下,直接连接的最大物理距离为15
m,可以使得人能远离屏幕来操作游戏,防止眼睛疲劳。后期会考虑采用315模块来实现无线的操作。1.2 显示控制单元此单元是整个系统的核心,完成了游戏的大部分功能设计,主要包括主控制器、VGA接口、PS/2接口、独立按键、数码管、串口等硬件部分。主控制器采用Altera于2004年推出的CycloneⅡ的FPGA,型号为EPC2C8208。其功耗较低,核电压只有1.2 V,片上RAM 有162
Kb,可以用于配置为RAM,ROM,FIFO等,时钟利用50
MHz的有源晶体产生。总控制单元负责接收数据采集单元的信号、两种游戏模式的切换和控制指令的产生、VGA显示控制、游戏初始化界面存储等。2 系统软件实现游戏主要实现的功能有:欢迎界面与游戏界面的切换以及VGA显示;速度手套模式与键盘模式的切换;计分系统,包含分数的显示、清零等;游戏的难度等级设置、游戏的开始界面设计、暂停、结束、重新开始等功能。软件设计包括单片机、FPGA的程序设计以及两者通信指令编码准则设定三个方面。2.1 单片机程序设计单片机部分主要功能为通过采集加速度传感器和按键的信号,根据两个单元间的编码准则产生相应的控制指令,通过串口上传到显示控制中心。程序设计流程图如图2所示。图2 单片机程序流程图2.2 FPGA程序设计FPGA是游戏的主控制器,完成了游戏的大部分功能,顶层设计文件中主要包括输入显示类模块、VGA核心模块、存储模块三类模块。其中输入显示类模块主要有分频模块、PS/2接收模块、串口接收模块、指令处理模块、数码管显示模块;存储模块包括基于FPGA
片上RAM的RAM和ROM模块。顶层设计框图如图3所示。图3 FPGA顶层设计框图2.2.1 输入显示类模块独立按键用于模式的选择、游戏难度的调节、由欢迎界面到游戏界面的切换;串口部分用于接收来自数据采集单元的控制指令,经过译码模块后送入模式选择模块;PS/2模块用于接收键盘信号输入并产生指令送入模式选择模块;数码管用于显示当前的游戏模式、难度等级和获得分数。显示器采用的分辨率为640&480 的,刷新频率为60 Hz,根据VGA常见刷新频率时序表可知,需要时钟为25 MHz左右,板子输入时钟为50
MHz,经过分频模块后可以提供25 MHz的时钟。2.2.2 存储模块设计中,由于采用的是FPGA的片上RAM作为存储介质,受到其162 Kb的约束,只能设计大小为256&256的单色界面。存储的数据位宽为32位,共2
048个,地址线为11位。游戏界面因为要不断修改,故存放在基于FPGA片上RAM的RAM模块中。其可同时有读写使能,因此可以同时读写,即使同时读写同一个地址也不会出错,而且还可以设置成读写地址线各自独立,不用考虑时分复用使用地址线的问题。这样在实际代码中就可以将RAM的读和写完全独立考虑,分别由扫描输出模块和数据处理模块完成,两者互不干扰。图4是RAM的读写时序图。图4 配置RAM中读写数据时序图开始界面由于是固定的,放入ROM
中,初始化ROM文件中的数据可通过Matlab处理得到。现在有一些字模软件虽然可以读取要显示的图片,但给出的数据格式并不能初始化ROM的,因此,利用Matlab编写了一段图片处理程序,可以读取图片,然后经过处理,生成一个可以直接复制到ROM初始化文件中的数组形式。这样,使得图片显示操作简单,图片替换更容易。2.2.3 VGA控制模块在游戏界面设计中,存在主要的难点:小方块随机间隔下落、难度等级设置等。在游戏中,为了增加游戏的难度,在设计中,小方块的降落为两个,而且是有一定的间隔、在随机位置下落。小方块的动态显示是通过不断修改RAM中要显示图像的数据来实现的。游戏中方块的长为32
个像素(对应RAM中存储的数据位宽,方便修改),则界面中有8条下落路线,小方块的下落是从界面顶端开始的,也就意味着RAM中的数据修改是从前8位的某一位开始的,因此实现随机下落只需要产生一个1~8范围的随机数。在设计中,通过设计了一个伪随机数产生器,生成一个9以内的随机数作为RAM修改数据的起始位。第二个小方块的下落是通过设定一个标志位Num2,当第一个方块下落到游戏界面的中间位置时,置位Num2,从而触发了第二个小方块的下落进程,第二个方块开始下落。其中,两个小方块下落修改数据的操作都是在VGA扫描的消隐阶段完成的,因此每进行一次帧扫描,小方块下落1个像素。VGA刷新频率为60
Hz,因此小方块每秒会下落60个像素。当游戏操作者漏接的方块数据到达一定数目m,游戏结束。难度等级是通过设置被控制方块左右移动灵敏度和漏接方块数目m 来实现的。灵敏度越高,m
越小,游戏等级越高。2.3 通信编码准则单片机从加速度传感器获得的数据中提取出y
轴的加速度值,由此可以判断出速度手套的此时的状态。它送往串口的数据不是加速度值,而是编码后的指令。具体的编码译码原则设定如表1所示。表1 串口通信编码准则表1 中FPGA 译码是FPGA
的串口接收模块获得后,解码之后送给VGA显示模块的指令。游戏中保持了传统键盘的兼容性,具体实现是通过PS/2模块根据键盘输入信号产生与表格1中FPGA译码相同的指令,送给VGA显示模块,完成对游戏的控制。3 结语本文设计了一款基于FGPA的体感游戏,通过利用人体的动作完成对游戏的操作,利用VGA显示技术来到达更好的类似虚拟现实的效果,同时系统也保持了对传统游戏键盘操作的兼容性。游戏通过加入人体的互动,使得游戏者可以对游戏有一种身临其境的感觉,增加游戏趣味性、交互性、构想性,同时也使得参与者身体得到运动与锻炼。游戏最后实现了常规游戏的基本功能,主要有欢迎界面与游戏界面的切换以及VGA显示;速度手套模式与键盘模式的切换;计分系统,包含分数的显示、清零等;游戏的难度等级设置、显示以及游戏的结束;游戏的暂停、重新开始等功能等。最后在硬件平台实现,表明游戏具有可玩性、趣味性,并能使游戏者获得较好的游戏体验。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一一个简单的程序编译出现问题,不知道如何解决 - FPGA/CPLD - 电子工程世界-论坛
后使用快捷导航没有帐号?
请完成以下验证码
查看: 4288|回复: 5
一个简单的程序编译出现问题,不知道如何解决
在线时间172 小时
芯币4678枚
TA的帖子TA的资源
纯净的硅(初级), 积分 547, 距离下一级还需 253 积分
纯净的硅(初级), 积分 547, 距离下一级还需 253 积分
编译提示错误:Error: Node "clk_div" of type Logic cell has no legal location
不知道如何解决,谁能指导一下,谢谢了
具体情况见图
(73.78 KB, 下载次数: 1)
15:59 上传
(102.74 KB, 下载次数: 1)
15:59 上传
在线时间490 小时
威望9087分
芯币12373枚
TA的帖子TA的资源
五彩晶圆(高级), 积分 9087, 距离下一级还需 913 积分
五彩晶圆(高级), 积分 9087, 距离下一级还需 913 积分
可能你的硬件资源太少,代码量太大了,所以FIT不了
一个为理想不懈前进的人,一个永不言败人!
欢迎光临网上店铺!
在线时间183 小时
TA的帖子TA的资源
纯净的硅(初级), 积分 552, 距离下一级还需 248 积分
纯净的硅(初级), 积分 552, 距离下一级还需 248 积分
可能你给内部寄存器clk_div分配管脚了(如果你在module中声明output&&reg clk_则不会出错),clk_div如果不用输出就不能分配管脚,我也遇到过相同的问题!
在线时间490 小时
威望9087分
芯币12373枚
TA的帖子TA的资源
五彩晶圆(高级), 积分 9087, 距离下一级还需 913 积分
五彩晶圆(高级), 积分 9087, 距离下一级还需 913 积分
VERILOG 还有这个破规定啊,第一次见识,学习了哦
一个为理想不懈前进的人,一个永不言败人!
欢迎光临网上店铺!
在线时间11 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 70, 距离下一级还需 130 积分
一粒金砂(中级), 积分 70, 距离下一级还需 130 积分
应该是定义的引脚冲突了,楼主可能是修改过输入输出端口了,引起了引脚冲突。
我也遇到这种情况过。
我也遇到类似的问题,的确是和引脚分配冲突了。
我分配了一个RESET_N的输入引脚,在顶层模块中没有此端口,但有wire RESET_N,以及一个power_up模块有output reg RESET_N。
编译通过,但fit时出现Node \"RESET_&
在线时间0 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
11:23 发表
应该是定义的引脚冲突了,楼主可能是修改过输入输出端口了,引起了引脚冲突。
我也遇到这种情况过。
我也遇到类似的问题,的确是和引脚分配冲突了。
我分配了一个RESET_N的输入引脚,在顶层模块中没有此端口,但有wire RESET_N,以及一个power_up模块有output reg RESET_N。
编译通过,但fit时出现Node &RESET_N& of type Logic cell has no legal location.
将顶层模块的wire RESET_N改为wire AUTO_RESET_N就可以正常fit了
EEWORLD 官方微信
EE福利 唾手可得
Powered byfpga问题集锦(1)
可编程逻辑器件设计技巧
1.&什么是.scf?
答:SCF文件是MAXPLUSII的仿真文件,&&可以在MP2中新建.&
1.&用Altera_Cpld作了一个186(主CPU)控制sdram的控制接口,&发现问题:要使得sdram读写正确,&必须把186(主CPU)的clk送给sdram,&而不能把clk经cpld的延时送给sdram.&两者相差仅仅4ns.&而时序通过逻辑分析仪测试没有问题.&此程序在xilinx器件上没有问题.&这是怎么回事?
答:建议将所有控制和时钟信号都从PLD输出,&因为SDRAM对时钟偏移(clock&skew)很敏感,&而Altera的器件PLL允许对时钟频率和相位都进行完全控制.&因此,&对于所有使用SDRAM的设计,&Altera的器件PLL必须生成SDRAM时钟信号.&
要利用SDRAM作为数据或程序存储地址来完成设计,&是采用MegaWizard还是Plug-In&Manager来将一个PLL在采用Quartus&II软件的设计中的顶层示例?可以选择创建一个新的megafuntion变量,&然后在Plug-In&manager中创建ALTCLKLOCK(I/P菜单)变量.&可以将PLL设置成多个,&或是将输入划分开来,&以适应设计需求.&一旦软件生成PLL,&将其在设计中示例,&并使用PLL的“Clock”输出以驱动CPU时钟输入和输出IP引脚.&
2.&在max7000系列中,&只允许有两个输出使能信号,&可在设计中却存在三个,&每次编译时出现“device&need&too&many&[3/2]&output&enable&signal”.&如果不更换器件(使用的是max7064lc68).&如何解决这个问题?
答:(参考译文:这两个独特的输出使能中每个都可能控制大量三相信号.&例如,&可能有16个双向I/O引脚.&每个引脚需要一个输出使能信号.&如果将这些信号一起分组到一个16位总线,&就可以使用一个输出使能控制所有信号,&而不用每个信号一个输出使能.&)
3.&关于vhdl的问题:process(a,&b,&c)&begin&end&&如果a、b、c同时改变,&该进程是否同时执行三次?
答:PROCESS&STATEMENTS&中的执行跟逻辑有关系,&&假如是同步逻辑,&&则在每次时钟的触发沿根据A,&B,&C的条件来执行一次;假如是异步逻辑,&&则根据判断A、B、C的条件来执行.&一般我们都推荐使用同步逻辑设计
4.&在设计最初,&由于没有将时钟信号定义在全局时钟引脚上,&导致MAXPLUS&II&在时间分析时提示错误:(时钟偏斜加上信号延迟时间超过输入信号建立时间).&全局时钟引脚的时钟信号到各个触发器的延时最小,&有没有可能通过编译软件设置,&将普通I/O脚上的时钟信号也经过芯片内部的快速通道以最小的延迟送到每个触发器时钟引脚?&
答:(参考译文:可以寄存这个信号,&并将它指定为全局信号,&步骤如下:指定—&逻辑选项—&个别逻辑选项—&全局信号.&但是,&最好通过专用输入引脚输入时钟信号.&)
5.&用MaxplusII&软件设计完后,&用Delay&Matrix查看延迟时间.&由于内部触发器的时钟信号用了一个输出引脚的信号,&譬如将一引脚ClkOut定义为Buffer,&Clkout是一时钟信号,&然后反馈到内部逻辑,&内部逻辑用此信号作为时钟信号,&但用Delay&Matrix,&却查看不到一些信号相应于ClkOut的延迟,&因为ClkOut是一Output引脚,&在Delay&Matrix&source&一栏中没有ClkOut信号,&如何解决这个问题?&
答:这种做法在逻辑设计中称为GATE&CLOCK,&&所谓GATE&CLOCK就是将设计中的组合逻辑结果拿来做时钟信号,&&这是一种异步逻辑设计.&
现在都推荐使用同步逻辑设计方法.&可以将该信号(CLKOUT)拿来作使能信号,&&即ENABLE信号,&&而时钟信号还是采用原来的统一时钟,&&使设计用尽量少的同步时钟,&&这样一来就还是用DELAY&MATRIX来分析原有的时钟.&
6.&我是一个cpld的初学者,&目前看到xilinx的Virtex-II中嵌入大量的资源如:powerpc、ram等,&究竟如何在fpga中使用这些资源?
答:Xilinx&Virtex-II中嵌入的资源非常丰富,&如BlockRAM、Digital&Clock&Manager、On-chip&termination等等.&ISE&4.2i软件完全支持这些资源.&可以举出单元库中相应基本数据的实例.&Xilinx&Core&Generator中也还支持BlockRAM等特性.&至于PowerPC和MGT设计,&可以使用Virtex-II&Pro开发者套件.&&
7.&在设计中,&往往需要对某个信号做一定(任意长)的延时,&有没有好的方法来实现?而不是采用类似移位寄存器的方法来延时.&&
答:使用移位寄存器在FPGA中对信号进行延时是一种好方法.&Xilinx&Virtex架构中每个对照表(LUT)都能够设置成为具有可编程深度(最多为16)的移位寄存器.&这就提供了一种高效的途径来在FPGA中实现移位寄存器.&无须使用触发器就可以实现一个16位寄存器.&作为一个好的设计习惯,&任何情况下都不要通过闸延迟来实现延迟逻辑.&&
8.&ISE中的PAD&TO&PAD&CONSTRAINT&是否是包括输入输出的pad时延之和再加上输入输出之间的组合逻辑的时延?还是只是输入输出之间的组合逻辑的时延?
答:Xilinx&PAD-to-PAD&contraint的确涉及到输入输出PAD时延.&这从布局后时序报告中可以看出.&&
9.&由于现在的设计基本上都是同步设计,&那么PAD&TO&PAD&CONSTRAINT&在什么情况下使用?
答:虽然现今多数设计都是完全同步,&但仍有一些情况需要从一个输入引脚到另一个输出引脚的纯粹组合路径.&因此,&仍然需要PAD-to-PAD&constraint控制这些路径的时延.&
10.&如何在ISE&中看到PAD&TO&PAD&的布线情况?
答:通常不必在意信号在FPGA内的路线,&只要它涉及到时序问题.&这种工具将对以优化的方式对设计进行路由.&如果希望检查具体路由,&可以使用Xilinx&FPGA&Editor,&它包含在ISE4.&2i软件中.&
11.&在Xilinx&Foundation&3.&1i下用JTAG&PROGRAMER下载程序到芯片中,&可是总是出现如下错误:If&the&security&flag&is&turned&on&in&the&bitstream,&&programming&status&can&not&be&others,&&programming&terminated&due&to&error.&&测量电路信号,&没有相应的波形,&显然下载没有成功.&所用的芯片是:Xilinx&Spartan2&XC2S50TQ144.&怎么解决?&
(参考译文:这是保密功能.&通过禁用回读,&配置数据不能从FPGA回读.&这可以防止其他人盗用你的成果.&在生成位元流过程中,&可以启用或禁用这个功能.&
确定配置是否准确无误地完成,&适合的方法就是检查FPGA上DONE引脚的状态.&如果正确地接收了位元流,&则DONE引脚将会升高.&而且,&既然使用JFAG配置,&就要确保在生成位元流过程中,&已经将JGAG时钟(而不是CClk)选作了Startup时钟.&)
12.&Xilinx&Virtex架构中每个对照表(LUT)都能够设置成为具有可编程深度(最多为16)的移位寄存器.&可否理解为,&在写设计的时候如果设计了一个深度不大于16位的移位寄存器,&ISE综合时就会用一个LUT来替代它?&
答:(参考译文:大多数综合工具,&例如和,&都能根据源代码中的移位寄存器来推断&LUT.&即使是深度大于16的情况,&此类工具也能够推断出多SRL16E,&从而实现移位寄存器.&利用此功能的另一种途径是在原代码中例示一个SRL16E.&详细说明可以参考软件包中的库指南.&)
13.&LUT是实现组合逻辑的SRAM,&怎样实现一个时序的移位寄存器,&是不是必须加一个触发器来配合LUT?&
答:(参考译文:结构中的LUT不是简单的组合逻辑。当它被配置为时,写操作是同步的。当它被配置为移位寄存器时,则无需消耗任何资源。事实上的内部电路比看起来更复杂。)
14.&在foundation&3.1环境里怎么找不到启动testbench.vhd的程式?&
答:伴随Foundation&3.1i出现的仿真器为门极仿真器,&因此你不能在这种设计环境下以VHDL级运行仿真.&vhdl代码必须在你运行任何仿真之前进行综合.&因此,&在Foundation&3.1i环境下并不能使用vhdl&testbench.&作为替代方式,&你可以编写仿真script.&
实际上,&Foundation&3.1i是一款相对较老的软件.&&Xilinx&ISE软件中支持HDL&testbench,&它的最新版本为4.2i.&
15.&关于双向口的仿真,&如果双向口用作输入口,&输出口该怎么设置?
答:做仿真时,&软件会自动地将IO口(包括双向口)的引脚本加入到.&SCF文件中去.&先新建一个SCF文件,&然后在NODE-&ENTER&NODES&FROM&SNF-&LIST,&将列出的所有IO引脚(包括了双向口)都加入仿真文件中,&就可以进行仿真了.&&
16.&关于ACEX1K的I/O脚驱动能力.&ALTERA&计算功耗的datasheet&中:对ACEX1K器件,&PDCOUT&(power&of&steady-state&outputs)的计算就是根据IOH,&IOL来计算的,&能否告诉我ACEX1K芯片的IOH,&IOL分别是多少?
答:关于ACEX1K的IO驱动能力,&IOH&IOL的大小可以从ACEX1K的数据手册中查到(ACEX.&PDF&PAGE&50/86).&
17.&设计中Vccio=3.&3V,&假如IOH=20mA,&&IOL=20mA,&n=10&(Total&number&of&DC&output&with&steady-state&outputs),&如何计算PDCOUT?
答:关于功耗的计算可以参照AN74(P2)中的功耗计算公式.&
18.&当Vccio=3.&3V时,&对于输入脚,&它兼容TTL,&CMOS电平;对输出脚,&它是否也兼容TTL和CMOS电平?对CMOS电平,&是否需要用OpenDrain&加上下拉电阻来实现?
答:ACEX1K器件引脚兼容TTL与CMOS电平.&COMS输出是否要加上拉电阻要看外部接的CMOS电平,&假如说接5V&COMS则需要上拉.&&详细情况可以参照AN117.&
19.&将EPC2与EPF10K30A连接成JTAG菊花链的形式,&在调试阶段可以跳过EPC2直接配置EPF10K30A,&而在配置通过验证以后再利用EPC2的JTAG口将EPF10K30A的配置信息固化到EPC2中去.&EPC2的专用配置端与EPF10K30A配置端连接,&当系统脱离JTAG电缆上电配置时,&由EPC2完成对EPF10K30A的配置.&这个过程中有一个疑问,&EPF10K30A相当于有两个配置通道(一个通过JTAG,&一个通过EPC2),&当其中一个配置通道工作时,&另外一个配置通道的存在是否会影响到配置过程的正常进行呢?如果相互影响,&怎样才能做到两种方式同时存在又互不影响呢?
答:可以使10K30A拥有两个不同的下载方式,&&在板子上做一个跳线开关即可.&也可以从当地的代理得到该模块的参考设计.&&
20.&ALTERA是建议直接使用MAXPLUSII或QUARTUS编译HDL源代码,&还是使用第三方EDA工具(如SYNPLIFY、LeoanrdoSpectrum或SYNOPSYS)先把HDL源代码编译为edf文件后再使用ALTERA的工具编译?
答:ALTERA建议用第三方的工具将HDL源代码编译为edf文件后再使用ALTERA的工具进行布局布线.&ALTERA的MAXPLUSII和QUARTUS也都自带有HDL的综合器,&一些简单的设计可以直接在MP2或QII中编译即可.&而且可以直接在软件中后台调用第三方的EDA工具.&
21.&用MAXPLUSII或QUARTUS多次编译同一设计生成的带延时的网表文件中的延时是否一样?
答:用MP2或QII多次编译同一设计成的带延时的网表文件中的延时是一样,&&但要保证该网表文件没有修改过.&
22.&在编译前设定一个模块的Synthesis&Style为FAST是否一定比不设定(NONE)要节省LC资源?
答:在布局布线的过程中,&Synthesis&Style的设置会影响到资源的利用率和速度的快慢,&&一般情况下:设置为FAST主要是为了提高设计的速度.&&在软件中除了综合类型的设置,&&还有一项是选择优化的目的:oPTIMIZE-&AREA&OR&SPEED.&选择AREA可以节省设计所占用的资源.&&
23.&Altera公司对芯片热设计有哪些资料和工具?&
答:ALTERA提供了许多计算功耗的资料和工具.&数据手册中的AN74就是关与计算ALTERA器件功耗的专门文档.&&
24.&如何在设计前期分析芯片的功耗?
计算功耗的工具:&ALTERA提供的QUARTUS软件就有计算功耗的功能,&&它可以根据你不同的激励项量来计算功耗;&在ALTERA&的网叶上就有专门计算功耗的运算器,&&请点击相关文章&它就给出了APEXII的功耗计算方法.&&
25.&看过“FLEX&PCI&Development&Board”的参考设计原理图,&它利用了条线开关选择配置方式.&既然两种配置方式管脚并没有公用,&为何需要这个跳线开关呢?
答:EPC2不会影响到用下载电缆通过JTAG口配置EPF10K30A.&使用跳线开关是在选择给10K30A下载的方式,&&是通过下载电缆还是EPC2.&&
因为将ECP2与10K30A连接成JTAG菊花链的形式通过下载电缆下载和用EPC2对10K30A下载的连接方式是不同的,&所以要将这两者分开,&&详细的连接方法应该在参考设计原理图中已经描绘的很清楚了.&&
26.&为了保证设计可靠性,&需要重点关注哪些方面?
答:(关于可靠性FPGA设计的几点建议)
①&(使用完全同步设计.&异步设计对路径延迟非常敏感,&因此不很可靠.&异步电路的一个例子是使用组合反馈的SR闭锁.&)
②&(绝不使用组合逻辑控制时钟信号.&因为在任何门控制时钟信号上可能产生短时脉冲干扰,&最终导致错误触发.&)
③&(绝不要依靠门延迟.&)
④&(FPGA的电源和接地引脚附近应该放置足够多的旁路电容器.&使用优质高频响应电容器.&)
⑤&(在FPGA上始终使用全局时钟缓冲来驱动内部时钟信号.&并且已经仔细设计了这些时钟缓冲和关联时钟配电网,&以将畸变减至最小.&)
27.&(“异步电路的一个例子是使用组合反馈的SR闭锁”.&请问如何理解SR闭锁?SR闭锁与SRFF有什么区别?)
答:(参考译文:只要门信号是活动的,&闭锁就会更改状态.&而FF只有在时钟边沿才更改状态.&)
28.&Xilinx公司的芯片在热设计方面可以提供哪些工具和资料?
答:(至于散热问题,&需要了解所用FPGA的功耗和正在使用的器件封装的热阻系数.&软件中所包含的工具可以估计功耗.&在数据手册中可以找到器件封装的热阻系数.&然后利用下面的公式计算接合温度.&)
&&&&其中,&功耗;接合温度;环境温度;封装的热阻系数
(之后确定接合温度是否在允许范围内.&C和I级器件允许的最高接合温度不同.&如果温度高于允许的最高值,&可能需要增加散热片或风扇.&)
29.&如果时钟进入FPGA后经过一段组合逻辑才上时钟网络,&会存在一定的延时.&综合布线后会出现信号输入延时为负值,&意味着信号比时钟先到达触发器.&那么,&怎样通过约束文件增加输入信号的延时呢?我试过对"NET"加上"MEDDELAY"的约束,&但是没效果.&&
答:(&参考译文:在现代高速数字设计当中,&不建议使用组合逻辑门控时钟信号,&因为这将会在选通的时钟信号上产生短时脉冲波形干扰,&导致错误触发.&这是缺乏可靠性的设计.&移除门控时钟通常所采用的技巧是使用的时钟使能引脚.&例如,&如果有一个信号正在驱动的时钟引脚,&则可以通过直接将传递给FF时钟引脚,&并将另一个信号与FF的时钟使能引脚连接,&来消除门控时钟.&)
(移除门控时钟后,&就不再有时钟延迟的问题了.&而且这种设计也比较可靠.&)
30.&FPGA生产产商提供了IP,&如何用第三方软件,&如Advantage&或&ACTIVE&vhdl,&调用并进行仿真?
答:(参考译文:提供的IP,&例如PCI,&是与仿真模型一同提供的,&这种模型可由第三方仿真工具,&如来处理.&因此对功能仿真来说,&没有问题.&通过从软件中导出可以执行定时仿真.&在某些情况下,&也包括样本测试平台.&)
31.&“As&a&good&design&practice,&&never&use&gate&delay&to&implement&your&delay&logic&under&all&circumstances”.&&Please&tell&me&what&does&"gate&delay"(闸)&mean?(“一个好的设计,&在所有情况下都决不会使用门延迟来实现延迟逻辑.&”此处“门延迟”是什么意思?)
答:&“(参考译文:“门延迟”指得是使用一系列逻辑门将一定数量的延迟导入到设计中.&既然门延迟更改像温度和处理技术这样的因素,&所以,&这是很不合适的.&由于温度的改变或使用不同版本的芯片,&设计可能会失败.&依赖门延迟的设计也不是可移植的,&也就是说,&要更改另一产品系列或部件号时,&需要重新设计整个电路,&只因为更改了门延迟.&)
(始终使用完全同步设计.&如果设计是全同步的,&则无需回应门延迟.&)
32.&(有一次,&将程序下载至芯片电路,&结果发生了故障,&并显示以下消息:“实际的文件名”.&问题可能在硬件配置.&检查了连线、扫描链路和电源接头都没有问题.&特定的扫描链路配置与实际的硬件相匹配,&电源充足且电压正常.&“”这么多出错消息,&什么原因,&怎么办?)
答:(通常,&这是由于中断的链或噪声链.&最常见的原因是,&连线不正确,&板子上的迹线不正确,&链路中的其它器件导致问题,&或者存在噪声并口.&试一下使用不同的PC.&也可以在FPGA的PROG引脚上增加一个的上拉电阻,&看看是否有帮助.&)
33.&在VHDL中,&定义为SIGNAL的量起到什么作用?什么时候需要定义这个量?下面的程序
和如下的程序有何区别?
答:(参考译文:如果在端口表中声明了,&这两个示例是一样的.&从硬件设计的角度看,&可以将视为电子信号.&因此,&基本上可以将每个对象声明为“”.&从仿真角度看,&中的与是根本不同的.&变量只不过是拥有值的对象.&变量分配即时出现在仿真中.&而且,&变量只能存在于一个过程内,&因此它不能通过过程来传递值.&另一方面,&信号有多个值.&不论何时分配信号,&仿真都会在某个仿真时段安排一个事件来更新信号的值.&在仿真时域里,&信号不会立即获得这个新的值.&而且信号可以存在于过程之外.&听起来好象有点复杂,&但大多数时候,&在硬件设计中可以只使用信号.&)
34.&如果输入时钟必须经过一段组合逻辑(比如需要进行时钟选择,&可选外部或内部时钟),&那么在DFF使能端加控制是无法解决的,&有什么更好的方法?
答:(参考译文:简单的方法是使用器件上的资源.&实际上是中的全局时钟缓冲,&将智能mux与2个时钟源之间的切换相结合.&更为重要的是,&即使选择信号更改不同步,&也能保证这两个时钟之间的无干扰切换.&)
35.&用Altera器件设计一个电路,&外挂一同步存储器件.&逻辑设计和存储器件的时钟是相同的,&但由于时钟信号带负载能力较差,&只能接一个负载,&所以将时钟信号接在可编程器件上,&而用内部赋值语句将时钟信号赋值给某一引脚,&此引脚信号再接到存储器件的时钟引脚,&但这样存在一个问题:存储器件的读写信号相对于Altera器件上的时钟信号有延迟,&存储器件的时钟信号相对于Altera器件上的时钟信号也有延迟,&这样存储器件的时钟信号与读写信号之间的时间差难以控制,&极有可能不满足存储器件的Setup/hold时间,&有什么好的方法解决此问题?&
答:可以利用ALTERA器件中的PLL来精确控制延时.&&ALTERA中的PLL是一个真正的模拟锁相环,&&它可以提供精确的时钟频率合成与相位延时的细微调整.&可以将时钟信号按照你的要求进行延迟调整.&
假如采用的器件没有PLL的话,&&那么可能需要在逻辑内部来做一些延时逻辑,&&不过这样会导致异步逻辑设计,&我们一般情况下不推荐这样用.&&还有一种办法就是在PCB板上来调整时延.&&关于PLL的详细资料可以参考ALTERA的相关文档.&&
36.&利用ACEX1K系列片内EAB单元创建RAM时,&每创建一个容量较小的RAM时就要占用一个EAB单元,&能否将多个RAM整合由一个EAB实现,&以节约片内的EAB单元?&
答:在ACEX1K系列的器件中,&一个EAB单元目前只能做一个应用,&我们现在的软件还不支持将多个小的RAM集成到一个EAB当中.&&
37.&Synthesis&Style设为FAST后,&发现速度有所提升,&同时使用的资源也减少了,&资源和速度似乎兼得了,&那么是否所有的模块都可以设定为FAST呢?&
答:将SYNTHESIS&STYLE设置为FAST主要是为了提高系统性能.&&但是有一点要记住的是,&&软件的设置不是在任何情况下对所有的设计都表现出相同的结果.&&针对这个设计模块,&&将SYNTHESIS&STYLE设置为FAST可能对资源和速度都有了优化,&&但这并不说明对所有的模块都有相同的效果,&&但是可以试一试.&&设计优化是一个原则与经验,&技巧相结合的过程,&&我们只掌握一定的原则与方法,&&根据我们自己的经验,&&运用一定的技巧,&才能将一个设计做到最优化.&&
38.&(要设计一个灰色编码16位的计数器,&怎么以VHDL描述来实现它?)
(参考译文:可以使用软件里的来生成计数器,&选择带有的输出语言.&这应该是实现计数器的有效方法,&而且不用进行额外的优化.&
因为lpm功能代码最适合此设计结构,&这种结构是非常熟悉我们的设计结构的专家设计的.&)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 fpga中的can总线代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信