集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: fpgaw

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

[复制链接]
sd6030889 发表于 2013-3-20 21:13:25 | 显示全部楼层
夏老师真是模范啊,致敬!
夏宇闻 该用户已被删除
夏宇闻 发表于 2013-3-21 07:22:37 | 显示全部楼层
夏老师,能否指点一下,关于FPGA的低功耗算法设计一般常用的有哪些方法?
菜鸟 发表于 2013-3-13 09:18

低功耗设计有多种方法,1,降低算法的计算复杂度、2,降低算法的计算精度到符合工程需求的底线。3,降低计算循环的速度至需求底线。4,关闭暂不用计算部分的时钟和电源进行有效的电源管理。…
sd6030889 发表于 2013-3-21 09:37:59 | 显示全部楼层
夏老师,请问FPGA上clk引脚和pll的clk引脚有什么区别啊
菜鸟 发表于 2013-3-21 09:59:49 | 显示全部楼层
回复 371# 夏宇闻

谢谢夏老师!
夏宇闻 该用户已被删除
夏宇闻 发表于 2013-3-23 07:04:33 | 显示全部楼层
本帖最后由 夏宇闻 于 2013-3-24 04:47 编辑
夏老师,请问FPGA上clk引脚和pll的clk引脚有什么区别啊
sd6030889 发表于 2013-3-21 09:37

PLL的时钟输入引脚和芯片的全局时钟输入脚都可以作为芯片时钟的输入引脚。若用PLL时钟输入,则芯片内部的部分逻辑可使用该PLL的输出,所以这部分逻辑电路的时钟波形和相位关系比较容易调整,但只能用于离该PLL距离最近的那块对速度要求高的局部电路,因此被称为局部时钟,而从芯片全局时钟引脚输入的时钟信号,可连接至整个芯片,被称为全局时钟,适用整个芯片中对速度要求一般的全局电路。芯片的引脚被分成几个块,如果有需求每块可以选用一个自己的PLL,如果没有需求,仍然可用全局时钟。
zxqcd2003 发表于 2013-4-2 11:04:54 | 显示全部楼层
请问夏老师:

    在Quartus II的原理图设计输入中,如何在nios ii 的外面添加一个自定义的模块,并将该模块与Niosii连接,以实现nios ii对该自定义模块的控制等操作??
夏宇闻 该用户已被删除
夏宇闻 发表于 2013-4-2 23:59:51 | 显示全部楼层
请问夏老师:

    在Quartus II的原理图设计输入中,如何在nios ii 的外面添加一个自定义的模块,并将该 ...
zxqcd2003 发表于 2013-4-2 11:04

niosii是一个处理器它有Avalon总线,一般自设计模块可以通过这个总线与处理器连接,通过运行与总线连接的ROM中的程序和RAM中的数据区互动,再与自设计模块交换数据。当然外部模块也可以通过总线请求处理器中断,执行由软件定义的中断任务,完成与外部模块的数据交流和处理。外部模块可以通过线路图绘制工具连接,更经常的可用实例调用。也就是编写一个可综合的更高层模块,将Niosii系统的FPGA片内部分和自设计模块,二部分实例连接组成这个更高层模块。它具有与片外ROM和RAM的地址和数据连接,还有与片外时钟、复位、键盘与控制电平的连接端口。
418478935 发表于 2013-4-4 17:59:16 | 显示全部楼层
回复 3# 夏宇闻

夏老师好:
我想请教一下您verilog中 signed小数 和 unsigned小数 进行乘法运算的问题

比如我有一个signed类型的数据A=-1.7,一个unsigned类型的数据B=+0.3。
A的整数部分用2-bit表示,小数部分用4-bit表示,那么A的二进制为6’b11_1011
B的整数部分用2-bit表示,小数部分用3-bit表示,那么B的二进制为5’b00_010

我想直接调用Quartus II 里面的乘法器来完成A*B运算,但是IP里面并不能单独指定数据输入端口是signed还是unsigned的,只能选择这个这个乘法器是signed还是unsigned,那这个IP的意思是它只能进行 signed × signed  或者 unsigned × unsigned 的运算。

这种情况下我是在unsigned类型的数据B的最高位之前再补充一个0,让它从unsigned的5’b00_010变成signed的6’b000_010数据。然后再送入乘法器IP中进行运算,这时输出为12-bit的signed数据C。

以下为modelsim仿真截图,红圈部分即为(-1.7)*( +0.3)


最终结果为12’b111111110110。因为A的整数部分用了2-bit,B的整数部分扩展后用了3-bit,那么我把乘积结果的高5-bit截取作为整数部分,11111相当于-1
低7-bit作为小数部分, 1110110相当于0.921875。

那么最终结果为(-1.7)*( +0.3)= -1.921875。

夏老师,这个误差也太大了吧,是我中间什么地方出问题了吗?

麻烦您了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
夏宇闻 该用户已被删除
夏宇闻 发表于 2013-4-5 08:04:34 | 显示全部楼层
回复  夏宇闻

夏老师好:
我想请教一下您verilog中 signed小数 和 unsigned小数 进行乘法运算的问题
...
418478935 发表于 2013-4-4 17:59

数字计算电路尽量不用小数做计算。用整数的基本算术运算电路,通过左、右移位、截断,很容易实现小数的运算。关键在于根据计算结果的精度要求,确定参与运算数的位数、中间结果和最后计算结果的位数即可。您的错误在于您没彻底理解也没能活学活用数的二进制表示法。
418478935 发表于 2013-4-5 13:40:55 | 显示全部楼层

标题

回复 379# 夏宇闻
    谢谢夏老师指点,我之前做的接口方面稍多,现在刚开始做信号处理,对各种数值的计算确实没有彻底理解。
我在看一个simulink模块,其中一个乘法器就是完成signed小数和 unsigned小数相乘。整数部分用若干比特表示,小数部分用若干比特表示。乘法器的类型是full precision的,我这里不太明白。
所以我才有此问题,我举的例子中问题是小数部分使用的bit的位数过少吗?希望您能抽出您宝贵的一点时间指点一下我。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 01:46 , Processed in 0.101099 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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