夏老师,请教您一个问题呀,是关于nios II 的硬件开发的
本帖最后由 夏宇闻 于 2011-12-14 17:21 编辑夏老师,请教您一个问题呀,最近我在做Nios II 嵌入式系统开发,在硬件开发,自行定制CPU过程中,需要用到SEG7_LUT_8,ISP1362,DM9000A,SRAM,VGA控制器和I2C等这些属于DE2开发板自定义的组件,但是原来SOPC_BUILDER 中没有的元器件,按照书上说把这些元器件加载在ALtera/sopc_builder/component/目录下,可在10.0版本的SOPC BUILDER 目录下却没有COMPONENT 这文件夹。我直接把光盘中的COMPONENT 文件夹直接复制在SOPC_BUILDER目录下,再打开SOPC BUILDER也没看到这些器件加载进去。
我尝试用在SOPC BUILDER 中用creat new component选项加载七段数码管这些器件,但是在ADD HDL文件后,信息栏中出现许多WARNING 意思是产生了不知类型的EXPORT端口,也无法加载,还会出现错误类似这样的问题:ISP1362:Can't have same name as its top level hdl module; VGA_0:ptf upgrade:No parameter ram_size.请求夏老师帮忙解决我这个纠结好久的问题,谢谢夏老师啊!
夏老师答:您应该与该开发板制造厂家联系,确定除NiosII核外的所有其他外围组件的原始代码在哪里?是否每个组件已经调试通过,您还需要了解AVLON总线时序是否能与这些外围组件交互,必须写测试代码逐一落实每个外围部件,否则您无法完成这个任务。 本帖最后由 夏宇闻 于 2011-12-14 17:41 编辑
夏老师好,我初学FPGA,用VHDL编一个电子钟的程序,大体思路是一个清零键,一个键控制是按秒脉冲计时,还是再通过按键调整加一改变时间,但是按键实现加一的时候数码管显示总是出现乱码现象,我的按键也有去抖动,不知为什么会这样,求教。。。谢谢。。
夏老师答:您必须先把键盘程度写好调试好,不怕抖动,才能做下一步。为了使键盘程序准确,必须写测试代码仿真后,才可初步确定您的设计代码生成的电路不怕抖动,下载后试验,确实不怕,然后再做数码显示,总之系统设计的每一环节需要一个一个地落实,确保每个环节正确,系统才能稳定工作。每一环节都需要写testbench,做仿真,下载,运行,落实后再往下做。设计验证方法学十分重要,马虎不得。 刚开始学verilog,在实践中发现一个现象如下代码所示:
module SWITCH_module(
output reg TDM_out,
input CLK8M,
input TS_BIT_position,
input TDM_in
);
integer i;
always @(negedge CLK8M)
begin
case(TS_BIT_position)
3'b000:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
3'b001:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
3'b010:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
3'b011:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
3'b100:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
3'b101:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
3'b110:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
default:for ( i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
endcase
end
endmodule
上面的代码是我想实现的意图,也达到了我想实现的意图,但当我想把其中的CASE语句简写为如下形式时
for(i = 0; i <= 7; i = i + 1)
TDM_out <= TDM_in;
综合出来的结果只有TDM_out是和上面相同的,后面的TDM_out就不是我想要达到的目的了,请问各位高手,上面这个语句有什么不符合的语法,或者综合器理解不了的问题吗?
夏老师回答:
可能是数组索引问题引起的,你的索引加了一个输入信号,这是一个wire类型的输入,你改一下,用时钟沿把该输入寄存后再做索引的加数。试一试再说。
谢谢夏老师的回答,后来我发现我综合时仍然用上面那个循环
for(i = 0; i <= 7; i = i + 1) TDM_out <= TDM_in;
但把器件从SPARTAN6换成SPARTAN3结果就是对的,(发现这个问题是因为我PC里还有老版本的ISE,而那个版本只支持SPARTAN3,当我拷到老版本下面综合出来发现居然是对的,返回到新版本把器件从SPARTAN6换成SPARTAN3也对了)真是太奇怪了,不知道夏老师怎么看这个问题 以前装的ISE 是WEB版,现在重新装了非WEB版,现在好像没问题了,啊啊啊啊,伤不起啊 本帖最后由 夏宇闻 于 2011-12-16 06:56 编辑
夏老师您好!我想请问下您quartus工具里自带的FFT IP核可以对浮点进行运算吗?我利用quartus里自带的IP核设计了一个定点的FFT工程 这个现有的定点可以在里面更改设置直接做浮点不?没有做过想问问您有没有这方面的经验指导我
夏老师答:.
工程应用场合的计算核通常有明确的计算精度要求,除动态范围特大的个别特例,一般均采用定点算核。我没做过浮点FFT算核,用过工具中的定点FFT核,也自己设计过定点FFT核。浮点的没有做过,工具是否支持您试一下就可知道。抱歉,我没能力和经验指导浮点算核的设计。 本帖最后由 sxl630828191 于 2011-12-16 11:10 编辑
夏老师:
我一直搞不懂reset的问题 , 以前写都将reset 这个引脚分配到一个button上,现在看了好多xlinx的教程,看他里面都没有分配reset引脚,但是有用。
而我自己程序若不分配reset引脚就会没用。实在想不通,请教一下。
夏老师答:
许多教材的作者可能还不如您动手能力强。相信自己,以项目完成后系统运行稳定可靠为唯一准则。
谢了,夏老师 回复 216# sxl630828191
谢了 本帖最后由 夏宇闻 于 2011-12-18 17:09 编辑
夏老师您好,我在试验nios的时候点击run as NIOS IIhardware,
出现Using cable "USB-Blaster ", device 1, instance 0x00 Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
能不能帮我看看出现了什么问题
夏老师答:从反馈的信息看原因可能是你配置的Niosll处理器不工作,为什么不工作没做任何说明。 回复 218# wangyao
谢谢老师,我再试试 本帖最后由 夏宇闻 于 2011-12-21 06:07 编辑
最近在做一个测试,PCF8563T芯片的,上电时VDD接3.3v,掉电时用CR1220纽扣电池供电,SCL,SDA做3.3V,负载30PF的I²C总线通信,但是设备会出现SCL为1.2V的不正常工作,变现为芯片运行死机,只要在断电情况下将电池放电,芯片就恢复正常,且芯片正常工作下电流为0.2ma,不正常时为0.4ma。求各位遇到过这种情况的大侠指教,谢谢了
夏老师问:
看不懂你的文字说明,您是否能表达明确些?