集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

跟李凡老师学FPGA之VHDL基础D01(20160720课堂笔记)

[复制链接]
 楼主| lcytms 发表于 2018-11-18 14:04:06 | 显示全部楼层
0945
        相或用英文。
        非,直接写not。
        然后是移位运算。
        这一点,我们在Verilog里面就体会很深了。
        Verilog里面只有逻辑移位。
        昨天我们做HPC的时候要乘4,有同学直接写乘4。
        编译器就会给你生成一个乘法器,你的面积就大了。
        也有同学写成逻辑左移的形式,往左边移2位就是乘4。
        这是逻辑移位。
        逻辑移位跟算术移位的区别就是,逻辑移位是空位补零,算术移位是首位移出位补位。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2018-11-18 14:04:53 | 显示全部楼层
0946
        逻辑右移也是这样。
        Verilog里面不支持算术移位,它的语法里面只有逻辑移位。
        还支持一种称之为旋转的方式,左旋和右旋。
        关于赋值语句,Verilog它是有阻塞赋值和非阻塞赋值。
        稍候我们会重点来讨论。
        在Verilog的学习过程中,很多人都很困惑,什么时候用阻塞,什么时候用非阻塞?
 楼主| lcytms 发表于 2018-11-18 14:05:34 | 显示全部楼层
0947
        当然我们现在就清楚了。
        现代的观点,要打倒阻塞,就像早期的要打倒goto语句一样的。
        在电平敏感的驱动里面用阻塞。
        沿敏感的驱动用非阻塞。
        这是Verilog经典的描述。
 楼主| lcytms 发表于 2018-11-18 14:06:20 | 显示全部楼层
0948
        你看这个信号是电平驱动的,还是沿驱动的。
        是沿驱动的,就用非阻塞赋值。
        电平驱动的,就用阻塞赋值。
        但是现在的观点是尽可能地用非阻塞。
        这一点在VHDL里面没有。
        Verilog四大怪之一,阻与不阻随便来。
        VHDL没有这个问题。
        VHDL是严谨的体系,你声明是什么,就是什么。
        当你声明成一个信号,信号是用signal来声明的,当你声明成信号以后,信号就用信号的赋值符。
        当你声明成变量,取决于设计者。
 楼主| lcytms 发表于 2018-11-18 14:07:00 | 显示全部楼层
0949
        设计者把一个变量名声明成信号变量名,那么以后的信号就始终用它赋值,就是信号的赋值。
        当你把一个变量名声明成变量,variable,就一定用变量赋值。
        声明成什么,就用什么赋值,取决于设计者。
        你让它怎么做,就怎么做。
        所以说这是很严谨的。
        拼接符,Verilog的拼接符是一个花括弧。
        如果我们要做算术移位,我们用拼接符来做,记不记得?
 楼主| lcytms 发表于 2018-11-18 14:07:49 | 显示全部楼层
0950
        算术移位就是首尾相接的移位。
        8位的count,要左移。
        逻辑移位,乘4我们可以这样写,<<2。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2018-11-18 14:09:58 | 显示全部楼层
0951
        这个就做了左移两位。
        如果是做逻辑移位,会怎么写?
        这个时候用拼接符来写。
        我们可以写成count[6:0], count[7],最高位写在后面。
        把最高位接到最低位。
        VHDL的拼接符使用的是&符号。
        数值类型,Verilog里面的二进制。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2018-11-18 14:10:54 | 显示全部楼层
0952
        二进制的逻辑变量,VHDL用标准逻辑类型,std_logic。
        二进制的逻辑总线,在VHDL里面是用std_logic_vector的描述。
        不定值。
        高阻。
        下面我们通过一个具体的例子,来说明这两种语言它们使用的差异。
        我们先举一个非常简单的例子,也是做一个回顾,由浅入深。
        VHDL,虽然只有两天的时间,但是我们从最基础开始,直到VHDL的最核心的部分,我们全面地对它进行一个讨论。
 楼主| lcytms 发表于 2018-11-18 14:11:44 | 显示全部楼层
0953
        我们做一个我们在初级班就学过的非常简单的例子,双输入与门。

本帖子中包含更多资源

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

x
 楼主| lcytms 发表于 2018-11-18 14:12:41 | 显示全部楼层
0954
        同样是准备一个工程文件夹。
        启动Quartus。

本帖子中包含更多资源

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

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

本版积分规则

关闭

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

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

GMT+8, 2025-2-21 19:10 , Processed in 0.064896 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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