社区导航

 
楼主: EEWORLD社区

你问我答,【夏宇闻老师专栏】与你一起探讨FPGA设计!

  [复制链接]

50

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-12-22 16:20:47 | 显示全部楼层
很高兴看到夏老,目前FPGA设计有matlab等高级工具可以自动实现rtl级代码,用verilong来设计芯片的方法以后会不会替代啊!


回复

使用道具 举报

12

TA的帖子

0

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2010-12-22 16:55:46 | 显示全部楼层
夏老师,我提个问题,怎样提高串口通信程序的可靠性。我个人设计一个串口接收的代码,工作在2M的波特率,总是实际接收的环境中受到干扰,出现某个数据丢失的情况。如果这个这个串口接收代码在FPGA内部环回测试,一点问题都没有哦,请夏老师出招!!!!!!!!!!!!!!!,附件是我设计的串口程序代码,实际系统CLK 是20MHZ,RST是高电平,请夏老师提意见,提出改进措施, 外部条件没法改了 uart-gen.rar (6.13 K)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
不好意思,班门弄斧了啊,我来谈下我的理解
1.在内部环路测试没有问题,逻辑应该基本是没有问题的。但是如果转成外部通讯的话,看一下数据输入和输出时候的同步性。
2.用逻辑分析仪或者chipscope抓一下错误的数据,看能不能找到错误发生的规律。
3.请关注一下波特率的设置:在内部测试的时候是不是和外面接收时候一样,注意到波特率和频率的关系。
4.将ucf里面io试着换一下,查一下io的驱动能力,还有io最好不要悬空,接弱上拉看看。
 


回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-23 11:37:44 | 显示全部楼层

原帖由 xiaoxin1 于 2010-12-22 16:17 发表 请教用FPGA实现数字信号处理的设计思想,怎么入手做,万分感谢:)

 

DSP系统通常要求实时数据流接口与高速计算响应。由于FPGA的特点,它可以比较容易地构造合适的逻辑,以实现与多种硬器件和复杂接口协议的连接,还可以构造并行流水线计算逻辑,以实现每个时钟进行多次计算操作,用有限的计算逻辑单元达到特定高速迭代计算的目的。至于如何着手,首先应理解任何算法可以化简为二进制的加、乘、移位、比较、截断等数字操作,例如卷积、IIR、FIR、DFFT等。然后学习如何用Verilog语言编写RTL代码;如何通过综合工具实现电路结构;如何编写测试代码通过仿真,验证电路结构是否能正确无误地处理由A/D转换器产生,并通过接口输入的高速数据流。为了达到以上要求,除了DSP的数学知识外,还需要掌握计算方法,即如何把纯粹的高等数学问题,转化为简单的加、乘、移位、比较、截断等数字操作,了解计算误差是否收敛和计算精度。所以这是一门跨越多个知识领域的复杂工作,必须有多个行业的专家协同工作才能做出真正有用的设计。



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-23 11:49:51 | 显示全部楼层

原帖由 樱雅月 于 2010-12-22 16:20 发表 很高兴看到夏老,目前FPGA设计有matlab等高级工具可以自动实现rtl级代码,用verilong来设计芯片的方法以后会不会替代啊!

 

将来也许有可能,因为计算机的能力不可低估。但在最近的20年内恐怕还不可能,因为matlab不可能精确地描述数据流、接口和协议,也不可能对算法做配合各种不同数据接口的有效简化,既达到工程的要求,又能用很少的硬件开销,目前只能依靠人的智慧才能做到。将来总结了各种类型的DSP后,也许有可能实现一般情况下的自动化。但对于新出现的需求,恐怕还是要依靠人的智慧。



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-23 12:03:43 | 显示全部楼层

原帖由 duanwuyu 于 2010-12-22 16:55 发表 夏老师,我提个问题,怎样提高串口通信程序的可靠性。我个人设计一个串口接收的代码,工作在2M的波特率,总是实际接收的环境中受到干扰,出现某个数据丢失的情况。如果这个这个串口接收代码在FPGA内部环回测试, ...

 

最主要的问题是实际应用时,接收端并不在FPGA上,用的是另外一个石英晶体和PLL产生的时钟信号,即使频率相同,也会有相位偏差和偏差积累,而且还有线路交叉干扰和突发干扰,所以您设计中必须模拟这些情况,在电路逻辑设计中考虑这些情况,通过仿真验证,证明时钟频率偏移产生的相位误差,交叉和突发干扰不会造成不可容忍的误码率,才能设计出正确的电路。实际上通过信道的数据传输必须编码和组块,并采用发现错误重发或者自动纠误的措施,才能保证极小的误码率。



回复

使用道具 举报

76

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-12-23 14:29:20 | 显示全部楼层
学FPGA以后做什么行业好呢?有发展前景?您看好什么行业?还需要补充什么专业知识?


回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-23 19:14:47 | 显示全部楼层

原帖由 zero3360 于 2010-12-23 14:29 发表 学FPGA以后做什么行业好呢?有发展前景?您看好什么行业?还需要补充什么专业知识?

 

做通信设备和系统方面的研发,加密/解密算法的实现,信道编码/解码,高速响应/高可靠控制系统,图象处理,ASIC数字芯片的逻辑设计。总之可做的工作是很多的,而且大多数属于自有知识产权的高技术,



回复

使用道具 举报

373

TA的帖子

0

TA的资源

裸片初长成(初级)

Rank: 10Rank: 10Rank: 10

发表于 2010-12-23 21:54:15 | 显示全部楼层
哇,激动ING
科技应该让生活变得更简单!


回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-12-24 08:47:15 | 显示全部楼层
信号发生器
要求:基带信号为频率1728~1768MHz(共6个频点,间隔8MHz)
用Verilog编程,ALTERA公司的FPGA器件实现

我是初学者,希望夏老师能给我详细解释一下要求的信号是什么样的信号,怎样实现?


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-12-24 08:53:27 | 显示全部楼层
在virtex-5中DCM的最低输入频率在32M,但是,要想实现10M到100M的倍频,应该怎样去做?


回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-12-24 10:30:38 | 显示全部楼层
请教
reg [15:0]opt1;//被减数,无符号
reg [15:0]opt2;//减数,无符号
reg [15:0]opt3;//差
reg C;         //借位标记

always()
   opt3<=opt1-opt2;

请问,如果opt1&lt;opt2,怎么给借位标记C赋值?<opt2,怎么给借位标记c赋值?></opt2,怎么给借位标记c赋值?>


回复

使用道具 举报

24

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2010-12-24 10:43:43 | 显示全部楼层

夏老师,你好,我想问一下关于TCL/TK的?

我想问一下怎样用TCL对RTL的Verilog代码进行修改,比如给代码加入注释,搜索代码中的关键字等的操作…… 网上关于TCL的资料很少,所以请您指点一下 谢谢!
enjoying EDA


回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-27 12:26:41 | 显示全部楼层

原帖由 张媛媛 于 2010-12-24 08:47 发表 信号发生器要求:基带信号为频率1728~1768MHz(共6个频点,间隔8MHz)用Verilog编程,ALTERA公司的FPGA器件实现 我是初学者,希望夏老师能给我详细解释一下要求的信号是什么样的信号,怎样实现?

 

是设计 1.728GHz 到1.768GHz的数字信号发生器?还是产生这么高频率的LVDS信号?



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-27 15:37:19 | 显示全部楼层

原帖由 斌斌 于 2010-12-24 10:30 发表 请教 reg [15:0]opt1;//被减数,无符号 reg [15:0]opt2;//减数,无符号 reg [15:0]opt3;//差 reg C; //借位标记 always() opt3<=opt1-opt2; 请问,如果opt1<opt2,怎么给借位标记C赋值?

 

您如果设计的是实际电路,则必须搞明白二进制数的表示和减法后出现负数的情况。

 

若有负数出现的情况发生,则应设置借位标记并置为1(否则保持为0),此时的输出值无意义,如果想让差有意义,则应该考虑借位标记,转换成有符号的表示。



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-27 15:46:55 | 显示全部楼层

原帖由 尚水云者 于 2010-12-24 10:43 发表 我想问一下怎样用TCL对RTL的Verilog代码进行修改,比如给代码加入注释,搜索代码中的关键字等的操作…… 网上关于TCL的资料很少,所以请您指点一下 谢谢!

 

我也不会用TCL在源代码中加注释和修改代码。我只会用编辑工具修改代码,添加注释。用TCL文件可以代替多条命令行执行Modelsim命令和综合工具命令。我记得有些综合工具的引脚定义可以通过编写TCL实现。我已经很久没有做大型设计,许多高级批处理操作已经忘记。你可以通过阅读样板程序中的.tcl文件和有关tcl的帮助资料来理解命令文件的使用。



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-27 15:53:44 | 显示全部楼层

原帖由 括号 于 2010-12-24 08:53 发表 在virtex-5中DCM的最低输入频率在32M,但是,要想实现10M到100M的倍频,应该怎样去做?

 

我不熟悉virtex-5中DCM,它是不是Xilinx Virtex-5 FPGA中的PLL(锁相环)的动态配置管理器(DCM)?你应仔细阅读有关说明文档,才能正确地使用DCM和PLL,使得FPGA的时钟系统既符合要求,又降低功耗。



回复

使用道具 举报

8886

TA的帖子

0

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

发表于 2010-12-27 17:54:36 | 显示全部楼层
有个疑问?如果说FPGA的容量有300万门,FPGA里面还包含大量的存储器,那这个存储器也是由门搭成的吧!所以我在想,这300万门的容量里面包括存储器中的门吗?另外一个就是,FPGA的容量有300万门与FPGA的容量有300万设计门有区别吗?


回复

使用道具 举报

19

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-12-29 16:15:41 | 显示全部楼层

请问怎么减小时钟的skew啊?

夏老师:

 你好,我设计了一个设计,是全同步的设计,基于Cyclone iii设计的,我现在想要他的fmax跑到200Mhz,现在正在优化时序,但是我看到clock的skew占了很大的时钟周期,我也把clock分配到了全局时钟网络,但是clock的skew仍然有10多ns,请问有什么方法可以减小这个skew吗?谢谢!



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-30 09:14:16 | 显示全部楼层

原帖由 eeleader 于 2010-12-27 17:54 发表 有个疑问?如果说FPGA的容量有300万门,FPGA里面还包含大量的存储器,那这个存储器也是由门搭成的吧!所以我在想,这300万门的容量里面包括存储器中的门吗?另外一个就是,FPGA的容量有300万门与FPGA的容量有300万设 ...

 

FPGA的容量一般是指它相当的门的个数。而FPGA是由许多个单元(cell)组成,每个单元内用查找表(由RAM构成)和2选1多路器来实现真值表(布尔)逻辑,每个单元还可以连接寄存器和缓冲器,单元外还有用于连接的存储单元,用多个单元可以构成极其复杂的组合和时序逻辑。所谓FPGA的容量相当于多少个门只是一个功能上基本相当的含糊概念,并不精确。



回复

使用道具 举报

699

TA的帖子

0

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

发表于 2010-12-30 09:32:58 | 显示全部楼层

原帖由 smart0604 于 2010-12-29 16:15 发表 夏老师:  你好,我设计了一个设计,是全同步的设计,基于Cyclone iii设计的,我现在想要他的fmax跑到200Mhz,现在正在优化时序,但是我看到clock的skew占了很大的时钟周期,我也把clock分配到了全局时钟网络, ...

 

状态机编码用严格的独热编码,不用一般的编码;不用普通的2进制计数器计数,用移位寄存器做计数器,分频用锁相环实现,大组合逻辑中间插入寄存器,如果还不行,只好选用速度档次更高的FPGA。

点评

老师您好,我想知道如果计数值很大,比如40,000,000 如何用移位寄存器实现呢?  详情 回复 发表于 2014-7-10 21:42


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-12-12 20:17 , Processed in 0.525791 second(s), 15 queries , Gzip On, MemCache On.

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