集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: fpgaw

至芯科技【夏宇闻教授专栏】与你一起搞定FPGA设计!

[复制链接]
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-12-14 06:11:07 | 显示全部楼层
刚开始学verilog,在实践中发现一个现象如下代码所示:

module SWITCH_module(
                       ...
zhshqh 发表于 2011-12-13 10:33

可能是数组索引问题引起的,你的索引加了一个输入信号,这是一个wire类型的输入,你改一下,用时钟沿把该输入寄存后再做索引的加数。试一试再说。
yhf561 发表于 2011-12-14 16:17:22 | 显示全部楼层

夏老师,请教您一个问题呀,是关于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:06:16 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-12-14 17:41 编辑

夏老师好,我初学FPGA,用VHDL编一个电子钟的程序,大体思路是一个清零键,一个键控制是按秒脉冲计时,还是再通过按键调整加一改变时间,但是按键实现加一的时候数码管显示总是出现乱码现象,我的按键也有去抖动,不知为什么会这样,求教。。。谢谢。。

夏老师答:您必须先把键盘程度写好调试好,不怕抖动,才能做下一步。为了使键盘程序准确,必须写测试代码仿真后,才可初步确定您的设计代码生成的电路不怕抖动,下载后试验,确实不怕,然后再做数码显示,总之系统设计的每一环节需要一个一个地落实,确保每个环节正确,系统才能稳定工作。每一环节都需要写testbench,做仿真,下载,运行,落实后再往下做。设计验证方法学十分重要,马虎不得。
zhshqh 发表于 2011-12-14 18:11:27 | 显示全部楼层
刚开始学verilog,在实践中发现一个现象如下代码所示:

module SWITCH_module(
                                       output reg [63:0] TDM_out,
                                       input CLK8M,
                                       input [2:0] TS_BIT_position,
                                       input [7:0] TDM_in
                                      );

    integer i;

always @(negedge CLK8M)
begin                                                                  
        case(TS_BIT_position)
3'b000  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8] <= TDM_in[i];
3'b001  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 1] <= TDM_in[i];
3'b010  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 2] <= TDM_in[i];
3'b011  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 3] <= TDM_in[i];
3'b100  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 4] <= TDM_in[i];
3'b101  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 5] <= TDM_in[i];
3'b110  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 6] <= TDM_in[i];        
default  :  for ( i = 0; i <= 7; i = i + 1) TDM_out[i*8 + 7] <= TDM_in[i];               
                endcase         
end        
endmodule

上面的代码是我想实现的意图,也达到了我想实现的意图,但当我想把其中的CASE语句简写为如下形式时

           for(i = 0; i <= 7; i = i + 1)               
                TDM_out[i*8 + TS_BIT_position] <= TDM_in[i];

综合出来的结果只有TDM_out[15:0]是和上面相同的,后面的TDM_out[63:16]就不是我想要达到的目的了,请问各位高手,上面这个语句有什么不符合的语法,或者综合器理解不了的问题吗?

夏老师回答:
可能是数组索引问题引起的,你的索引加了一个输入信号,这是一个wire类型的输入,你改一下,用时钟沿把该输入寄存后再做索引的加数。试一试再说。

谢谢夏老师的回答,后来我发现我综合时仍然用上面那个循环
for(i = 0; i <= 7; i = i + 1) TDM_out[i*8 + TS_BIT_position] <= TDM_in[i];
但把器件从SPARTAN6换成SPARTAN3结果就是对的,(发现这个问题是因为我PC里还有老版本的ISE,而那个版本只支持SPARTAN3,当我拷到老版本下面综合出来发现居然是对的,返回到新版本把器件从SPARTAN6换成SPARTAN3也对了)真是太奇怪了,不知道夏老师怎么看这个问题
zhshqh 发表于 2011-12-15 09:18:05 | 显示全部楼层
以前装的ISE 是WEB版,现在重新装了非WEB版,现在好像没问题了,啊啊啊啊,伤不起啊
qq376784106 发表于 2011-12-15 12:54:40 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-12-16 06:56 编辑

夏老师您好!我想请问下您  quartus工具里自带的FFT IP核可以对浮点进行运算吗?我利用quartus里自带的IP核设计了一个定点的FFT工程   这个现有的定点可以在里面更改设置直接做浮点不?  没有做过  想问问您有没有这方面的经验指导我

夏老师答:.
工程应用场合的计算核通常有明确的计算精度要求,除动态范围特大的个别特例,一般均采用定点算核。我没做过浮点FFT算核,用过工具中的定点FFT核,也自己设计过定点FFT核。浮点的没有做过,工具是否支持您试一下就可知道。抱歉,我没能力和经验指导浮点算核的设计。
sxl630828191 发表于 2011-12-15 17:01:06 | 显示全部楼层
本帖最后由 sxl630828191 于 2011-12-16 11:10 编辑

夏老师:
   我一直搞不懂reset的问题 , 以前写都将reset 这个引脚分配到一个button上,现在看了好多xlinx的教程,看他里面都没有分配reset引脚,但是有用。
而我自己程序若不分配reset引脚就会没用。实在想不通,请教一下。

夏老师答:
许多教材的作者可能还不如您动手能力强。相信自己,以项目完成后系统运行稳定可靠为唯一准则。

谢了,夏老师
sxl630828191 发表于 2011-12-16 11:10:15 | 显示全部楼层
回复 216# sxl630828191


    谢了
wangyao 发表于 2011-12-17 16:13:43 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-12-18 17:09 编辑

夏老师您好,我在试验nios的时候点击run as NIOS II  hardware,
出现Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Pausing target processor: not responding.
Resetting and trying again: FAILED
Leaving target processor paused
能不能帮我看看出现了什么问题

夏老师答:从反馈的信息看原因可能是你配置的Niosll处理器不工作,为什么不工作没做任何说明。
wangyao 发表于 2011-12-18 23:04:58 | 显示全部楼层
回复 218# wangyao


    谢谢老师,我再试试
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-7-7 22:00 , Processed in 0.072546 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表