699

帖子

0

TA的资源

五彩晶圆(中级)

281
 

原帖由 lifuwu 于 2011-3-18 20:29 发表 希望一般的问题,大家都百度找答案啊,别浪费夏老师的精力。我建议夏老师应该在宏观上指导大家学Verilog c。我每天都来这个帖子看看的,看能得到什么收获,但经常都是大失所望。

 

我认为学习Verilog数字设计最重要的是实践和书本学习一定要密切结合。书本知识不只是硬件描述语言的基本语法和一些参考书,更多的是EDA工具中附带的许多技术资料和设计方法,它的内容和各类参数化组件包罗万象,犹如百科全书,在学会基本设计方法后,是不是能活学活用丰富的现成的IP核是成为一个高手的关键因素。当然各种算法的简化和抽象也十分重要。设计各种算法电路必须对计算过程和精确度有透彻的理解,才能构造出合理的结构来实现。另外对于接口协议的理解也很重要,设计新的数据接口,必须理解新协议的要点,把它们抽象成电路设计中的状态机,才能控制电路,实现协议的有效转换。这些知识的原理十分简单,我们在数字和模拟电路课程中都学习过,但是否能解决实际问题,每个人的能力是不同的,有的人学会了基本方法后,如鱼得水,什么设计都敢做,也能做,而且做得十分精巧,而有的人却只能模仿别人,设计十分笨拙。我常把学习数字设计比做学习游泳,学校的课程和考试很象在浅水泳池中玩了几次,不可能真的学会游泳。游泳必须到2米2以上的深水池才能学会。大学本科的老师如果认真负责,同学的练习时间足够,一小部分学生有可能考上深水证,有了深水证,每天在深水中练习两三小时,有高级教练的指导和鼓励,自己不怕艰苦,乐在其中,几年后成为游泳高手才有可能。当然最高水平的泳者还必须到大江大海里去搏击大风大浪。成为一个优秀的数字设计师与成为能搏击风浪的弄潮儿本质上没有什么不同。

此帖出自FPGA/CPLD论坛
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

282
 

回复 280楼 夏宇闻 的帖子

谢谢夏老师,谢谢您的指点!
此帖出自FPGA/CPLD论坛
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

283
 

回复 281楼 夏宇闻 的帖子

收获很大。非常感谢夏老师的指点。
这个比喻真是很恰当,可惜现在很多学生都没有钻研精神了,什么课程都想着靠课堂那几节课就学会了。
此帖出自FPGA/CPLD论坛
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

284
 

原帖由 夏宇闻 于 2011-3-19 17:15 发表   我认为学习Verilog数字设计最重要的是实践和书本学习一定要密切结合。书本知识不只是硬件描述语言的基本语法和一些参考书,更多的是EDA工具中附带的许多技术资料和设计方法,它的内容和各类参数化组件包罗 ...

 

在我感觉呢,学fpga就像搭积木似的,真的,如果”积木“的概念落实了,我觉得fpga的理解也算深入了,一堆积木很齐全,我想搭建什么样子的结构我都能搭建哈哈哈,也不知道我说的对不对老师?????

此帖出自FPGA/CPLD论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

285
 
昨晚梦到夏老师给我写了一些学FPGA用到书籍,可是我还没来得看,就醒了啊,不知道能不能重新写一份清单呢?非常感谢。
此帖出自FPGA/CPLD论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

286
 
问的问题比较基础。
使用VHDL做加法,减法,比较大小的时候使用什么数据类型好一些?
我现在一般使用的是std_logic_vector类型,在仿真的时候发现是对的,但是在硬件上有时是对的,但是有时也会出现错误的结果,这个是什么原因呢?

[ 本帖最后由 stepan 于 2011-3-22 09:19 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

287
 

我的FFT ip核仿真

我把altera的FFT ip核放到modelsim中仿真,输入的信号都是严格按照规定输入的,为什么输出的波形中source_valid有一部分会为0了,但是我在quartus中却是对的。如图。

[ 本帖最后由 smart0604 于 2011-3-22 14:27 编辑 ]

modelsim仿真图.jpg (18.81 KB, 下载次数: 0)

modelsim中仿真图

modelsim中仿真图

quartus中仿真图.jpg (13.85 KB, 下载次数: 0)

quartus中仿真图

quartus中仿真图
此帖出自FPGA/CPLD论坛
 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

288
 
原帖由 lifuwu 于 2011-3-21 23:27 发表
昨晚梦到夏老师给我写了一些学FPGA用到书籍,可是我还没来得看,就醒了啊,不知道能不能重新写一份清单呢?非常感谢。

如果您读过数字电路基础,可以先从读懂我编写的《Verilog数字系统设计教程》第2版 (由北京航空航天大学出版社出版)开始。
在计算机上安装 ModelSim  SE 6.5和 QuartusII 10.0两个工具软件,分别用于仿真和综合,认真做好书上每一个练习题和思考题。
此帖出自FPGA/CPLD论坛
 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

289
 
原帖由 鑫海宝贝 于 2011-3-19 20:09 发表

 
在我感觉呢,学fpga就像搭积木似的,真的,如果”积木“的概念落实了,我觉得fpga的理解也算深入了,一堆积木很齐全,我想搭建什么样子的结构我都能搭建哈哈哈,也不知道我说的对不对老师?????


搭积木只是设计工作的一部分。更重要的部分是设计架构的规划:安排寄存器组,存储器区,设计控制流,使处理后的数据在积木块、组合逻辑块、计算逻辑块、寄存器、存储器和输入/输出接口之间有条不紊地流动,并且必须编写严格的测试模块,根据系统运行后的响应,产生大量的有序或随机的测试数据流,从而对数据的流动处理过程进行严格全面的验证,检查系统的处理过程和运行结果是否符合预期的功能指标和时序要求,所使用的硬件资源是否合理,是否还可以优化,以降低成本。对于设计系统的处理精确度和速度,也必须要有全局考虑的概念,达到工程需求的标准即可,精度太高或太低,太快或太慢都不合适。因此,对于系统的算法也必须在工程精度要求的范围内做适当的简化,以减少电路系统的复杂度,并且提高设计系统的响应速度。当然,系统所消耗的功率,设计者也不能不认真考虑,否则功耗超标的设计系统绝没有任何前途。
此帖出自FPGA/CPLD论坛

赞赏

1

查看全部赞赏

 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

290
 
原帖由 stepan 于 2011-3-22 09:10 发表
问的问题比较基础。
使用VHDL做加法,减法,比较大小的时候使用什么数据类型好一些?
我现在一般使用的是std_logic_vector类型,在仿真的时候发现是对的,但是在硬件上有时是对的,但是有时也会出现错误的结果,这 ...

设计算术逻辑运算单元,用VHDL编写时,使用标准的逻辑向量类型,相当于用Verilog编写时,用 reg[ n:0] 类型或者wire [n:0]类型,这无疑是最正确的选择。在硬件上有时正确,有时错误的原因很可能是您对二进制算术运算的法则还不熟练。用二进制进行算术运算时必须注意进位、借位和溢出等问题,还是有符号数/无符号数和不同数制之间的转换问题也必须予以重视。
此帖出自FPGA/CPLD论坛
 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

291
 
原帖由 smart0604 于 2011-3-22 14:21 发表
我把altera的FFT ip核放到modelsim中仿真,输入的信号都是严格按照规定输入的,为什么输出的波形中source_valid有一部分会为0了,但是我在quartus中却是对的。如图。


您先把FFT搞清楚后,然后编写完整的测试模块,再做仿真。FFT是快速富立叶变换,是对输入的采样数据序列,按照蝶型图进行乘加运算,求得变换结果。我在图中没有看到波形中有多位数值的出现,看到的只有1比特的数字信号。我无法理解您提出的问题。

[ 本帖最后由 夏宇闻 于 2011-3-22 21:32 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

292
 

回复 290楼 夏宇闻 的帖子

我的程序是这样的

entity state is port ( clk , rst : in std_logic; --时钟,复位

                               start : in std_logic; --开始使能

                               a_step,c_step,d_step : in std_logic_vector(24 downto 0);  --a_step<c_step<d_step

                               idle,acc,con,dec: out std_logic;

                               s_step: out std_logic_vector(24 downto 0) );

end entity state;

architecture beha of state is

signal s_en: std_logic;

constant step0:std_logic_vector(24 downto 0):="0000000000000000000000000";

 begin

process(clk,rst,start,s_step,a_step,c_step,d_step,s_en)

begin

       if start='0' then idle<='0';acc<='0';con<='0';dec<='0';s_en<='0';

       else

          if s_step=step0 then idle<='1';acc<='0';con<='0';dec<='0';s_en<='1';

         elsif s_step<a_step then idle<='0';acc<='1';con<='0';dec<='0';s_en<='1';

         elsif s_step<c_step then idle<='0';acc<='0';con<='1';dec<='0';s_en<='1';

         elsif s_step<d_step then idle<='0';acc<='0';con<='0';dec<='1';s_en<='1';

         else idle<='0';acc<='0';con<='0';dec<='0';s_en<='0';

         end if;

      end if;

      if rst='0' or start='0' then     s_step<="0000000000000000000000000";

      elsif rising_edge(clk) and s_en='1' then s_step<=s_step+"0000000000000000000000001";

      end if;

end process;

end beha;

设计目标功能是在start有效时开始计数,当计数值在0到a_step之间时acc等于1,在a_step到c_step之间时 con等于1,在c_step到d_step之间时dec等于1. 可是在实际硬件上运行发现即使s_step大于d_step还是con等于1,这是怎么回事?

[ 本帖最后由 stepan 于 2011-3-23 14:26 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

293
 

夏老师好

啊,有夏老师会少走很多弯路了,呵呵
此帖出自FPGA/CPLD论坛
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

294
 

回复 289楼 夏宇闻 的帖子

谢谢老师的细心教导,在此学习了,老师能这样负责的回复每个人的帖子我真的很敬佩,您真的很值得我们尊敬,这样更加深了我好好学习fpga的信念,在此谢谢老师
此帖出自FPGA/CPLD论坛
 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

295
 
原帖由 stepan 于 2011-3-23 14:15 发表
我的程序是这样的
entity state is port ( clk , rst : in std_logic; --时钟,复位
                   &nb ...

我VHDL多年没有用了,许多语法也已经忘记。我读了几遍您编写的程序还是读不懂你的思想。请你用Verilog改写一遍,以便我帮助你分析。
此帖出自FPGA/CPLD论坛
 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

296
 
原帖由 鑫海宝贝 于 2011-3-23 16:29 发表
谢谢老师的细心教导,在此学习了,老师能这样负责的回复每个人的帖子我真的很敬佩,您真的很值得我们尊敬,这样更加深了我好好学习fpga的信念,在此谢谢老师

解闷而已。不必感谢,作为退休教师,纳税人为我付退休工资,有一口饭吃,还能思考,对年轻人还有用,我很欣慰。谢谢大家捧场。
此帖出自FPGA/CPLD论坛
 
 
 

回复

699

帖子

0

TA的资源

五彩晶圆(中级)

297
 
原帖由 zhangwei84 于 2011-3-23 15:06 发表
啊,有夏老师会少走很多弯路了,呵呵

路还是要靠自己两个脚走的,没有汽车和飞机,连自行车都没有。如果读了我的解答,真能使同学们少走一些弯路,我就很高兴了。谢谢捧场。
此帖出自FPGA/CPLD论坛
 
 
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

298
 

回复 295楼 夏宇闻 的帖子

学习了哈哈哈,明白老师的意思了,我没只看您给我的回复,也看了其他的回复,收获很大,其实学习我觉得还是主观上有想学的信念,才有这个动力去搞好它,起码我是这样认为的
此帖出自FPGA/CPLD论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

299
 

感谢夏老师

今天一口气看完了所有的提问和夏老师的回答,很有收获,学习FPGA一段时间了,也买了属于自己的开发板,认真阅读了夏老师的那本经典著作,对FPGA算是有个初步的认识,很感激夏老师在百忙之中能给我们这些热爱逻辑设计的初学者给予这么悉心的指导,祝您身体健康!!!
此帖出自FPGA/CPLD论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(中级)

300
 

回复 295楼 夏宇闻 的帖子

改成VERILOG应该是这样

// state.v

module state(clk,rst,start,a_step,c_step,d_step,s_step,idle,acc,con,dec);

input clk,rst,start;

input [24:0] a_step,c_step,d_step; //a_step<c_step<d_step

output [24:0] s_step;

output idle,acc,con,dec;

reg [24:0]s_step;

reg s_en,idle,acc,con,dec;

always@(posedge clk) begin

 if (!rst)      s_step<=0;

else begin

     if (start) begin

            if (s_en) s_step<=s_step+1;

           else s_step<=s_step;

           end

    else s_step<=0;

    end

end

always @(start,s_step,a_step,c_step,d_step)

begin

 if (start==0) begin

        idle=0;

        acc=0;

        con=0;

        dec=0;

        s_en=0;

        end

else if (s_step==0) begin

        idle=1;

        s_en=1;

        end

else if (s_step<a_step) begin

        acc=1;

        s_en=1;

        end

else if (s_step<c_step) begin

        con=1;

        s_en=1;

        end

else if (s_step<d_step) begin

        dec=1;

       s_en=1;

       end

else begin

       idle=0;

       acc=0;

       con=0;

       dec=0;

       s_en=0;

       end

end

endmodule

 

我的想法:复位时全置零,

                  点击start开始,再点击停止

                  在每个时钟上升沿到来时 判断s_en是否为1,为1则将s_step自加1

                  组合电路判断s_step处于哪个阶段

                  a阶段:在0时idle置1,s_en置1  继续自加

                  b阶段:在0到a_step之间时acc置1,s_en置1 继续自加

                  c阶段:在a_step到c_step之间时con置1,s_en置1 继续自加

                  d阶段:在c_step到d_step之间时dec置1,s_en置1 继续自加

                  e阶段:在大于d_step时 自加结束

但是实际硬件会出现以下情况:

1.成功完成,最后处于e阶段,s_step自加结束

2.不能完成,最后处于b,c,d某个阶段。s_step仍然在自加,虽然已经大于d_step

[ 本帖最后由 stepan 于 2011-3-24 09:37 编辑 ]
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表