集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: fpgaw

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

[复制链接]
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-9-26 20:58:27 | 显示全部楼层
inout使用中出现Illegal output or inout port connection (port 'a_in').
在练习verilog时碰到这样一个问 ...
vvt 发表于 2011-9-26 20:17


Inout只能被定义为线型变量。它表示的是三态的总线,所以必须处理好输入和输出的控制关系,换言之输出时,不能输入,输入时,不允许输出。还必须注意inout 通常只能用于fpga的引脚。fpga内部不能用三态门,因为布局布线时不能实现。您的代码中完全没有必要把a_in等 定义为inout,您只用它作为测试信号,而且在initial块中被赋值。作为被测试模块的输入,所以在顶层模块中应该定义为reg类型,这个您没有错。但在被测试模块中a_in等应被定义为wire型的input型的输入端口,而不是inout类型的端口,所以就出错了。您必须认真读懂我编写的书的语法部分,彻底理解书上的讲解后,才开始做练习,否则很浪费时间。我书上对inout和对应的电路有详细的讲解。
CPLD 发表于 2011-9-27 20:14:55 | 显示全部楼层
夏老师:弄个计数器    比如说  让他计数到1000   在这1000次计数里  你完成初始化   等到1000时  你把某个标志位置一   然后程序就在也不会这里面来了
418478935 发表于 2011-9-27 21:02:07 | 显示全部楼层
夏老师好:
       我最近看文章的时候,发现里面有提到两个时钟之间的PPM,比如+/- 1000 ,这个应该是跨时钟域的方面的单位吧,能否讲下ppm是度量什么的单位,有什么意义吗?

        先谢谢了。
玻色子 发表于 2011-9-27 21:09:42 | 显示全部楼层
夏老师:
最近我要做个项目,是基于FPGA的专用进位链进行TDC设计,我看了很多资料,其中的推荐使用的延迟线是用加法器实现的,我就不太明白这个加法器是怎么实现的,是先写一个一位加法运算,然后需要多少就用多少连起来还是怎么的,还有就是实现了之后它的延迟怎样设计的,据说是要在chip planner上设计,那个怎么使用,我根本找不到资料啊,希望夏老师能指点一下,万分感谢!!!
destiny01 发表于 2011-9-28 08:56:39 | 显示全部楼层
夏老师您好:
    我最近刚接触FPGA,看了中断实验的视频后,之后自己下来练习编程和硬件仿真,nios ii中编译都通过了,就是在板子上进行硬件仿真时总是弹出系统ID不匹配?重新建立了软核后还是这个问题,在这里希望夏老师给指点一下。
Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: OK
Reading System ID at address 0x01804128:
    ID value does not match: read 0x3A02402B; expected 0x55E07EB4
    Timestamp value does not match: image on board is older than expected
    Read timestamp 20:21:59 2011/08/23; expected 15:26:35 2011/09/26
The software you are downloading may not run on the system which is currently
configured into the device.  Please download the correct SOF or recompile.
Restarting target processor
ice_lyb 发表于 2011-9-28 11:37:54 | 显示全部楼层
夏老师您好:
我在学习过程中弄遇到了这样的一个问题,就是在使用$ranmom这个系统函数的时候我不是太理解,在书上有过这样的解释  :
           $random         是产生一个随机数,
        那么   $random%2    可否理解成对产生的这个$random除以2后得到的余数 ?
还有我在特权的博客上看到了一篇关于$random的博客。其中是如下:

“$random函数调用时返回一个32位的随机数,它是一个带符号的整形数...”,并给出了一个例子:
_____________________________________________________
EX-1:
   reg[23:0] rand;
   rand=$random%60; //产生一个在 -59—59范围的随机数
—————————————————————————


又给出了一个产生0~59之间的随机数的例子:
_____________________________________________________
EX-2:
   reg[23:0] rand;
   rand={$random} %60; //通过位拼接操作{}产生0—59范围的随机数
—————————————————————————
此处,我不理解的地方时:
1、 $random产生的数字和是带符号的数字吗?
2、这个$random产生的默认的位数为多少bit?
3、为什么在{$random}%60表示的是产生0-59范围内的随机数,为什么在添加了位拼接符后随机数的范围就变成了正数,而没有了负数了?
4、对于位拼接符,我想请问一下位拼接符号的默认的输出多少bit?是否位拼接符输出地结果是不是就是无符号型?

期待着您的指点,谢谢
另外,冒昧的问一下,以后如果遇到问题可否直接给您发邮件联系~
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-9-29 17:49:04 | 显示全部楼层
夏老师好:
       我最近看文章的时候,发现里面有提到两个时钟之间的PPM,比如+/- 1000 ,这个应该是跨时 ...
418478935 发表于 2011-9-27 21:02


PPM是用来表示不同类型石英晶体计时精确度的单位,可表示百万分之几的误差(Parts Per Million)
例如:PPM 为1% 的晶体时钟,每天的误差可以按照以下公式计算 ?
每天有 24 x 60 x 60 = 86400 秒.  每天的用该晶体制造的手表产生的误差:1% x 86400 = 864 秒 = 14 分钟,这样的表就没有人买了,呵呵!
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-9-29 18:02:33 | 显示全部楼层
夏老师:弄个计数器    比如说  让他计数到1000   在这1000次计数里  你完成初始化   等到1000时  你把某个 ...
CPLD 发表于 2011-9-27 20:14


计数器通常应该有复位信号、使能控制和加载起始数功能。如果使能控制信号被置为1,计数器就能不断地计数,可以让它判断计数值,一旦到了1000上界,便执行复位到0,或者加载任意数值,也可以控制计数器是否继续使能,还是停止计数。当然需要设计一些部件,比教科书上略微多几个逻辑部件,也就是用Verilog多写几条语句而已,产生这些使能和加载控制信号,用语言实现是非常容易的,但需要学习一段语法和调试方法。
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-9-29 18:33:07 | 显示全部楼层
夏老师您好:
    我最近刚接触FPGA,看了中断实验的视频后,之后自己下来练习编程和硬件仿真,nios ii中编 ...
destiny01 发表于 2011-9-28 08:56


我不知道您的开发板是自己做的还是购买的。这个问题很可能是开发板有问题,也许只是开发板上某些设置不正确。从您贴在问题框内的信息看,开发工具期望您下载的软件应该是新生成的,而您想下载的却是一个老版本,这两者对不上。我不知道您想下载的东西是如何产生的?您自己编写的?还是工具软件带来的?许多问题比较复杂,我也不好回答。我建议您先咨询开发板生产厂商的工程师,让他们给您示范,先把一个最基本的小设计走通,证明工具没有问题后,再开始做您自己的设计。否则您将把大量的时间浪费在无效的劳碌中,虽然付出了很多的劳动,收获却很少。
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-9-29 18:44:20 | 显示全部楼层
夏老师您好:
我在学习过程中弄遇到了这样的一个问题,就是在使用$ranmom这个系统函数的时候我不是太理解 ...
ice_lyb 发表于 2011-9-28 11:37


1、 $random产生的数字和是带符号的数字吗?答:是的。
2、这个$random产生的默认的位数为多少bit? 答: 是32位。
3、为什么在{$random}%60表示的是产生0-59范围内的随机数,为什么在添加了位拼接符后随机数的范围就变成了正数,而没有了负数了?
答: 因为这是语法规定的,在$random系统函数的特例下,用拼接符号把它括起来,并非表示拼接,只是表示变成正的随机数。
4、对于位拼接符,我想请问一下位拼接符号的默认的输出多少bit?是否位拼接符输出地结果是不是就是无符号型?
答: 对于拼接符可以拼接的位宽,并没有明确的上限,里面有多少位都可以,如果里面有10个或者更多的变量,每个变量可以是1位宽的,也可以是n位宽的,所以拼接起来可能很宽,这只不过是语言的一种表示方式而已,与具体的硬件无直接的联系。如果是想要实现的硬件,没有那么多位宽的资源,即使写了也无法实现。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-15 23:29 , Processed in 0.062099 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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