找回密码
 注册
关于网站域名变更的通知
查看: 367|回复: 2
打印 上一主题 下一主题

向李小龙学FPGA

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-24 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
还是从李小龙说起。伴随着一声“哟嚯”,飞出一脚后张开双臂身体半蹲的招牌式动作,被全球各地无数人模仿过。可是我们知道,全世界只有一个李小龙。无论你把“招式”模仿得多么惟妙惟肖,都无法达到那个效果。原因其实很简单,我们不具备他的速度和力量。采用反推法逆向思维,如果具备了他的速度与力量,任何一个招式都会威力无穷。由此可知,基本功是多么重要。
前几节的内容,我们讲的是怎么“减负”,尽量卸下对于完成项目来说没有必要的学习部分。本节内容要讲的就是,对于核心知识点,必须下苦功完全掌握。
我们经常会遇到这样的情况,“感觉”已经懂了,会了,但是一进入实际项目束手无策。为什么?这种情形,绝大部分时候,都是因为基本核心知识点还没有完全学通,处于半懂不懂的状态。例如:
搞不清楚 add_flag和sel_flag的区别 ,不清楚变量使用的条件,不清楚计数器需要用几个已经计数器之间的关系。
那么对于核心知识点,应该达到什么样的标准,才算是真正掌握了呢?
:当收到en1=1时,执行一下操作
a.间隔2个时钟周期后,dout产生宽度为5的高电平脉冲,然后
b.间隔2个时钟周期后,dout产生宽度为7的高电平脉冲,然后
c.间隔2个时钟周期后,dout产生宽度为3的高电平脉冲,然后
d.间隔2个时钟周期后,dout产生宽度为6的高电平脉冲。
当收到en2=1时,执行一下操作
a.间隔4个时钟周期后,dout产生宽度为3的高电平脉冲,然后
b.间隔1个时钟周期后,dout产生宽度为6的高电平脉冲,然后
c.间隔6个时钟周期后,dout产生宽度为3的高电平脉冲,然后
d.间隔2个时钟周期后,dout产生宽度为5的高电平脉冲。(答案如下)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
4142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        cnt0 <= 0;
    end
    else if(add_cnt0)begin
        if(end_cnt0)
            cnt0 <= 0;
        else
            cnt0 <= cnt0 + 1;
    end
end
assign add_cnt0 = add_flag ;      
assign end_cnt0 = add_cnt0 && cnt0==x-1 ;
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        cnt1 <= 0;
    end
    else if(add_cnt1)begin
        if(end_cnt1)
            cnt1 <= 0;
        else
            cnt1 <= cnt1 + 1;
    end
end
assign add_cnt1 = end_cnt0;      
assign end_cnt1 = add_cnt1 && cnt1==4-1 ;
always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        dout <= 0;
    end
    else if(en_dout)begin
        dout <= 1;
    end
    else if(end_cnt0)begin
        dout <= 0;
    end
end
assign en_dout = add_cnt0 && cnt0 == y-1;
always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        add_flag <= 0;
    end
    else if(en1||en2)begin
        add_flag <= 1;
    end
    else if(end_cnt1)begin
        add_flag <= 0;
    end
end
always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        sel_flag <= 0;
    end
    else if(en1)begin
        sel_flag <= 0;
    end
    else if(en2)begin
        sel_flag <= 1;
    end
end
always  @(*)begin
    if(sel_flag==0)begin
       if(cnt==0)begin
        x = 7;
        y = 2;
       end
       else if (cnt1==1)begin
        x = 9;
        y = 2;
       end
       else if (cnt1==2)begin
        x = 5;
        y = 2;
       end
       else begin
        x = 8;
        y = 2;
       end
    end
    else begin
        if(cnt==0)begin
        x = 7;
        y = 4;
       end
       else if (cnt1==1)begin
        x = 7;
        y = 1;
       end
       else if (cnt1==2)begin
        x = 9;
        y = 6;
       end
       else begin
        x = 7;
        y = 2;
       end
   end
end
类似这些习题,一直要练习到不需要思考的过程,而是形成类似于条件反射式的自然反应。掌握的要领就是不停练习反复练习。在这一点上,没有捷径可走。唯一可依托的,就是——勤奋。
高深的内容都是由最基本的要素组合而成。一旦有了扎实的基本功底,就有了“李小龙的速度与力量”,很多“招式”方面的高深问题就迎刃而解了。
本节中我们通过借喻“功夫”,来说明基本功的重要性以及和高深内容的关系。
! x" C( }, V: D/ G( e

该用户从未签到

3#
 楼主| 发表于 2019-7-25 17:45 | 只看该作者
wu68aq 发表于 2019-7-24 16:51
/ M1 b  G6 V6 q  Z& |% Q) z. @4 I看看

: B: F+ Q$ `7 r8 U- i& t. C1、0基础0经验的小白+ @: b) ~) ~' |* I
2、要转行的社会工作者
$ B: M3 Y, b% R" J0 z0 m. g3、需要作提高的工作者$ I( P' t$ ~8 w; R# {
潘文明导师进行指导,达到在垂直应用领域“专”“精”的效果,实现从“小 白”到“大牛”的突破8 E6 v% Z6 C- L7 o
想学fpga,都可以私信我或者联系QQ 1465617980
. m% z+ L. J/ W; c1 D4 i% N/ h& W1 o% t. [) l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-18 20:39 , Processed in 0.109375 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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