《搭建你的数字积木 数字电路与逻辑设计》(1)
第一部分 逻辑设计基础
- 1.逻辑设计概述及vivado基础
- 2.布尔代数和Verilog基础
- 移位运算 缩减运算 位拼接运算
- 位宽调整机制
- 3.组合逻辑电路设计基础
- 阻塞/非阻塞赋值
- 赋值语句
- 循环语句
- 设计实例
- 多路选择器(multiplexer)
- 4 时序逻辑电路设计基础
- 触发器和锁存器(Flip_flop And Latch)
- 寄存器
- 实例:数码管显示秒表
- 5.FSM--Finite State Machine(有限状态机)设计
- 6 逻辑设计工程技术基础
书籍的电子版链接 link
提取码:kdp2
1.逻辑设计概述及vivado基础
这部分是数电里老生常谈的问题,没什么看的;
2.布尔代数和Verilog基础
内部输入端口必须为wire型;
外部输出端口必须为wire型;
移位运算 缩减运算 位拼接运算
移位运算:>> 和 << 逻辑移位,移入的是0;
<<< 和 >>> 算术移位 ,移入是最高位标志位;
reg [15:0] ROMA [7:0] 表示位宽16位,深度为8的存储器;
reg memb[n-1:0] //表示由n个1位寄存器构成的存储器组;
reg [n-1:0] mema //一个n位的寄存器;
其中 memb不能直接全部赋值,只能指定地址;
位运算,缩减运算,逻辑运算
缩减运算举例:即与,或,异或运算只有一个操作数时
wire [3:0] a;
wire y;
assign y=|a; //代表y=a[3]|a[2]|a[1]|a[0];
位拼接运算进行循环移位
wire [7:0] a;
assign rot ={a[2:0],a[8:3]}; //循环右移3位
assign rot1={3'b000,a[8:3]}; // 右移3位,插入0
assign rot2 ={3a[8],a[8:3]}; //右移3位,插入3个a[8]
位宽调整机制
位宽调整机制:
assign sum1 = (a+b)>>1; //a b都是8位的加法的溢出位直接舍弃
assign sum2 = (0+a+b)>>1; //verilog中0是32位的0,括号中的加法结果是32位,//先移位将最低位移出,再截断8位
3.组合逻辑电路设计基础
阻塞/非阻塞赋值
阻塞赋值:在执行下一条语句前,一个表达式只能赋给一个数据类型的值,赋值阻断了其他语句的执行;
非阻塞赋值:表达式的值在always块结束时进行赋值;
赋值语句
过程赋值语句:
y=a;
y=y&b;
y=y&c;
持续赋值语句:
assign y=a;
assign y=y&b;
assign y=y&c;
我理解的是持续赋值,不会被后续的赋值所覆盖;过程赋值会被覆盖;
initial块:只执行一次,多用于TB文件里面的初始化语句,用来产生测试环境和设置信号记录;
always块:不断重复的活动着,直到仿真结束;
循环语句
for循环
和我们C语言中的for循环一样,注意循环体中是顺序执行的;
repeat语句
将一条语句执行多次;
repeat(8)
begin
...
...
end
将块内的语句执行8次;
while语句
同C语言中while语句的用法;
forever语句
一般用在initial块中,产生周期性的波形,作为仿真激励信号;
verilog实例
//test1 8位2进制数相乘
module 8bit_mul{input [8:1] op1;
input [8:1] op2;
output reg [16:1] result;
}
integer i; //循环变量
always@(*)
result =0;
for(i=1;i<=8;i++)beginif(op1[i])
result = result + (op0<<(i-1));
end
endmodule
组合电路意外综合出内部存储单元(latch)的原因以及解决方法:
组合电路中变量如果没有赋值将会一直保持原来的值,在if else语句或者case语句中,没有全部赋值完全,则会综合出锁存器;
解决方法:一个是在任务开始前给变量赋初值;另一个则是用else或者default语句全部赋值;
设计实例
多路选择器(multiplexer)
module multiplexer(input in0,in1,in2,in3,input s1,input s0,output reg out //为什么要用reg型
);
always@(*)begincase({s1,s0})2'b00:out=in0;2'b01:out=in1;2'b10:out=in2;2'b11:out=in3;
endcase
end
endmodule
还有一些简单的比较器什么之前刷HDLBits的时候都写过,就不在重复;
4 时序逻辑电路设计基础
触发器和锁存器(Flip_flop And Latch)
D触发器
在clk的上升沿到达时发生变化,并存储在触发器中;输入信号只在时钟的上升沿进行采样,值的变化不会立刻相应;还可以在D触发器上添加使能和复位信号;构成其他的触发器;
同步信号:信号的变化受到CLK的约束,即使输入信号发生了变化,这种变化所带来的的响应,只有在CLK的跳变沿才会转化成响应;
异步信号:不受CLK的约束,输入信号的改变会立刻得到响应;
锁存器
电平触发锁存器,即只有信号保持在一个高电平或者低电平的期间,信号的变化才有效;
触发器和锁存器的区别:一个时钟沿驱动,一个是电平驱动;
寄存器
在D触发器的基础上增加一个load信号,在需要的时候将值取出;
移位寄存器和计数器都比较简单,一带而过;
实例:数码管显示秒表
这个之前写过数码管秒表
5.FSM–Finite State Machine(有限状态机)设计
之前有写过有限状态机
6 逻辑设计工程技术基础
抖动:实际应用中的信号,比如是1us一个周期,每500ns一个时钟跳变沿,但在实际中可能不会这么准确,学术上定义为,高速串行信号边沿到来时刻与理想值的偏差。
竞争与冒险:一个信号经过多条传输途径,输出之后的顺序有前有后,称为竞争,竞争带来的毛刺称为冒险。
亚稳态:同步系统中,不满足建立时间,保持时间,触发器输出端在0和1之间状态不确定。
组合逻辑毛刺的处理:添加选通信号,让门网络只在选通信号作用期间有效;
异步时序电路竞争问题:当异步时序电路在状态变化的瞬间,有多个变量同时发生改变,则此异步电路存在竞争问题,
临界竞争:若电路存在竞争问题,且最终态与变量的变化次序有关,则此竞争为临界竞争;此异步电路就会出现毛刺;
由于电路写的太少,对于此部分不能生深刻的理解,决定先去做一部分项目之后,再来完善
未完待续。。。。。
《搭建你的数字积木 数字电路与逻辑设计》(1)相关推荐
- 《QTP自动化测试进阶》(1)
学习<QTP自动化测试进阶>第一章. 采用不同的项目开发模型对自动化测试有不同的影响. (1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化 ...
- QTP自动化测试从零基础到精通进阶(脚本测试、VBS语法、描述性编程、测试框架)...
QTP自动化测试从零基础到精通进阶(脚本测试.VBS语法.描述性编程.测试框架) 网盘地址:https://pan.baidu.com/s/19yUptC8PBFZFfH-VpyUUpQ 提取码: a ...
- 《精通QTP——自动化测试技术领航》—第1章1.6节对象库(下)之进阶编程篇
本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.6节对象库(下)之进阶编程篇,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区"公 ...
- 亿能测试-QTP自动化测试系列视频-汇总
视频: 第1讲-安装目录分析[QTP自动化测试视频系列_亿能测试] http://www.automationqa.com/forum.php?mod=viewthread&tid=1146& ...
- 转:一个简单的基于WEB的QTP自动化测试框架-SAFFRON
来源: http://www.itestware.com/ctest/index.php?option=com_content&view=article&id=62:webqtp-sa ...
- QTP自动化测试视频系列
第1讲-安装目录分析 第2讲-认识QTP操作窗体 第3讲-QTP示例程序业务讲解 第4讲-QTP高手进阶指南 第5讲-初试QTP脚本录制回放 第6讲-QTP脚本增强与调试 第7讲-QTP的三种录制模式 ...
- 软件测试技术qtp,51Testing独家连载:(四十一)精通QTP——自动化测试技术领航
操控方式2: '获取DOM对象 setoDocument = Browser("Browser").Page("Page").Object '使用GetElem ...
- 51Testing独家连载:(七)精通QTP——自动化测试技术领航
1.3 录制与回放-QTP的开关 阶段要点 录制在实际项目应用中的价值观(极低). 新手切记不可在项目应用时被禁锢在录制中. 录制及其相关功能的重点知识点提炼. 录制功能"旁门左道" ...
- 《精通QTP——自动化测试技术领航》—第1章1.3节录制与回放—QTP的开关
本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.3节录制与回放-QTP的开关,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区"公 ...
- 《精通QTP——自动化测试技术领航》—第1章1.2节帮助文档(HELP)-QTP的说明书...
本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.2节帮助文档(HELP)-QTP的说明书,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区& ...
最新文章
- 使用抽象等设计工具创建一个稳固的核心机制
- 【词汇】preci-词根、ap-前缀、de-前缀、ous-后缀、ify-后缀、ise-后缀
- springcloud api-gateway详解
- Docker 实战教程之从入门到提高(二)
- MySQL coalesce()函数
- 【人工智能】【深度学习】初学者如何选出最适合自己深度学习框架?
- oracle 转成 mysql_oracle转mysql总结(转)
- 如何成为更优秀的工程师?
- android如何获取系统开机时间
- Android Studio查看MD5
- Linux使用lrzsz快速上传和下载
- 显卡的优化以提高计算机性能作用,NVIDIA控制面板里的“优化以提高计算机性能”是什么功能的?...
- 【小李木耳】2013年1月31日:北京!北京!空气污染,我倒是赚钱了,自己都无奈。
- zxing Qr二维码(二维码颜色、logo)
- 006 window7或虚拟机上不了网或DNS出问题
- 数据分析之Excel的基本功能(下)
- pip install -t的意思
- 腾讯跟阿里两位王者之间的对比
- 【C++·C11】C++ 时间与时间戳
- 真机最小化安装centos7 网卡驱动
热门文章
- 用这些进行PDF翻译,双语对照、翻译后排版不变、还免费!
- Java的高并发编程系列(三)
- Markdown表格——复杂表格
- 购买周期 python-用Python实现一个基于EG协整法的跨周期套利策略
- 智慧电力信息化系统建设整体方案
- 项目采集自动刷新 php,PHP168 CMS自动采集-PHP168 CMS自动更新-齐博CMS站群管理系统...
- C#中MessageBox用法大全(附效果图)
- JAVA调用U盾进行客户认证实例
- ScreenCapture API – QTP截屏工具
- Movavi Screen Capture Studio 10.2.0 特别版 Mac 屏幕录像工具