lcytms 发表于 2019-1-9 14:17:01

1331
        VHDL我给大家做一个时序逻辑,做一个计数器。
        状态机做一个。
        然后我们就布置下午的练习。
        下午的练习也很简单,就是把我们以前写过的流水灯也好,七段数码管也好,把它翻成VHDL。

lcytms 发表于 2019-1-10 14:09:21

1332
        做一个计数器,做一个状态机。
        我们可以比较这两种方法,这两种语言。
        特别是关于行为的相同和不同之处。

lcytms 发表于 2019-1-10 14:10:53

1333
        同样是新建工程向导,取名counter_vh。
        然后新建VHDL文件,另存为counter_vh.vhd。
        库声明。

lcytms 发表于 2019-1-10 14:11:44

1334
        实体。
        端口。

lcytms 发表于 2019-1-10 14:14:01

1335
        写结构体。
        肯定是用行为写。
        Ctrl-S、Ctrl-K。
        检查一下框架。
        我们来写一个计数器的行为。
        大家注意VHDL和Verilog的一些重要区别。
        行为语句我们用像if、case的一些语句来写。
        这是行为的描述。

lcytms 发表于 2019-1-19 11:47:49

1336
        VHDL的信号敏感表,严格地遵循非综合的目的。
        哪些信号列出来,变更的时候会处理。
        时钟变更会处理。
        在VHDL里面没有沿事件。
        Q发生变化,我们也要讨论,因为q要加一。
        所以说是所有的信号。
        If是一个架构。
        如果我们要写一个同步复位,沿敏感的信号,在Verilog里面,会出现在信号敏感表里面,它跟综合有关。

lcytms 发表于 2019-1-19 11:48:48

1337
        VHDL的信号敏感表,跟综合无关。
        综合的意义一定用条件来叙述。
        它可以这么来写。
        Clk的事件,同时clk为高,1就是一个上升沿,写成0就是下降沿。
        嵌套在沿事件里面的结构全部是同步的。
        如果你写同步复位,它的里面的是同步。
        它的外面的是异步。

lcytms 发表于 2019-1-19 11:50:09

本帖最后由 lcytms 于 2019-1-22 21:15 编辑

1338
        我先这样写,然后我们会给出VHDL的经典使用的方法。
        Q清零。
        或者直接写16个0,更常用的写法是others。
        这样不论多少位都清零。
        置位以后q让它加一。
        我们先这样写,然后分析综合。
        它一定会报错。

lcytms 发表于 2019-1-19 11:52:05

本帖最后由 lcytms 于 2019-1-22 21:14 编辑

1339
        本身这种写法,在Verilog里面是没有任何问题的。
        但VHDL它不干。
        它为什么不支持这种写法呢?
        就是由于它是强数据类型。
        分析综合。
        它直接报错。
        报q这个错。
        它说,q这个对象不能被读。
        Q这个对象它是一个输出类型。
        VHDL是强数据类型。
        强数据类型就要求,赋值号左右两侧的数据类型的属性要完全一致。
        Q的属性是输出,而这边是输入。
        解决的方案,可以把它改成buffer。
        但是VHDL典型的有一种处理方法,输出有的时候是不能改成buffer的。
        输出就是输出。
        Buffer是一个双向的嘛,一个缓冲器。
        它这个端口就是输出端口。

lcytms 发表于 2019-1-19 11:53:18

本帖最后由 lcytms 于 2019-1-22 21:14 编辑

1340
        这个时候改成buffer是有条件的。
        现在我们这个条件如果不允许它改成buffer,怎么做?
        VHDL想出一个办法。
        声明一个中间信号,int_q。
        绑定它的数据类型为向量,15:0。
        中间信号没有声明方向。
        既可以用作输入,也可以用作输出。
        然后我们来驱动中间类型的q。
        中间类型的的q,它怎么变成端口呢?
        很简单。
        将q引出来即可。
页: 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28
查看完整版本: 跟李凡老师学FPGA之VHDL基础D01(20160720课堂笔记)