第一部分 逻辑设计基础

  • 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)相关推荐

  1. 《QTP自动化测试进阶》(1)

    学习<QTP自动化测试进阶>第一章. 采用不同的项目开发模型对自动化测试有不同的影响. (1)瀑布模型:瀑布模型在需求定义方面做得很好,这对自动化测试是有益的,包括可以尽早选择合适的自动化 ...

  2. QTP自动化测试从零基础到精通进阶(脚本测试、VBS语法、描述性编程、测试框架)...

    QTP自动化测试从零基础到精通进阶(脚本测试.VBS语法.描述性编程.测试框架) 网盘地址:https://pan.baidu.com/s/19yUptC8PBFZFfH-VpyUUpQ 提取码: a ...

  3. 《精通QTP——自动化测试技术领航》—第1章1.6节对象库(下)之进阶编程篇

    本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.6节对象库(下)之进阶编程篇,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区"公 ...

  4. 亿能测试-QTP自动化测试系列视频-汇总

    视频: 第1讲-安装目录分析[QTP自动化测试视频系列_亿能测试] http://www.automationqa.com/forum.php?mod=viewthread&tid=1146& ...

  5. 转:一个简单的基于WEB的QTP自动化测试框架-SAFFRON

    来源: http://www.itestware.com/ctest/index.php?option=com_content&view=article&id=62:webqtp-sa ...

  6. QTP自动化测试视频系列

    第1讲-安装目录分析 第2讲-认识QTP操作窗体 第3讲-QTP示例程序业务讲解 第4讲-QTP高手进阶指南 第5讲-初试QTP脚本录制回放 第6讲-QTP脚本增强与调试 第7讲-QTP的三种录制模式 ...

  7. 软件测试技术qtp,51Testing独家连载:(四十一)精通QTP——自动化测试技术领航

    操控方式2: '获取DOM对象 setoDocument = Browser("Browser").Page("Page").Object '使用GetElem ...

  8. 51Testing独家连载:(七)精通QTP——自动化测试技术领航

    1.3 录制与回放-QTP的开关 阶段要点 录制在实际项目应用中的价值观(极低). 新手切记不可在项目应用时被禁锢在录制中. 录制及其相关功能的重点知识点提炼. 录制功能"旁门左道" ...

  9. 《精通QTP——自动化测试技术领航》—第1章1.3节录制与回放—QTP的开关

    本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.3节录制与回放-QTP的开关,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区"公 ...

  10. 《精通QTP——自动化测试技术领航》—第1章1.2节帮助文档(HELP)-QTP的说明书...

    本节书摘来自异步社区<精通QTP--自动化测试技术领航>一书中的第1章1.2节帮助文档(HELP)-QTP的说明书,作者余杰 , 赵旭斌,更多章节内容可以访问云栖社区"异步社区& ...

最新文章

  1. 使用抽象等设计工具创建一个稳固的核心机制
  2. 【词汇】preci-词根、ap-前缀、de-前缀、ous-后缀、ify-后缀、ise-后缀
  3. springcloud api-gateway详解
  4. Docker 实战教程之从入门到提高(二)
  5. MySQL coalesce()函数
  6. 【人工智能】【深度学习】初学者如何选出最适合自己深度学习框架?
  7. oracle 转成 mysql_oracle转mysql总结(转)
  8. 如何成为更优秀的工程师?
  9. android如何获取系统开机时间
  10. Android Studio查看MD5
  11. Linux使用lrzsz快速上传和下载
  12. 显卡的优化以提高计算机性能作用,NVIDIA控制面板里的“优化以提高计算机性能”是什么功能的?...
  13. 【小李木耳】2013年1月31日:北京!北京!空气污染,我倒是赚钱了,自己都无奈。
  14. zxing Qr二维码(二维码颜色、logo)
  15. 006 window7或虚拟机上不了网或DNS出问题
  16. 数据分析之Excel的基本功能(下)
  17. pip install -t的意思
  18. 腾讯跟阿里两位王者之间的对比
  19. 【C++·C11】C++ 时间与时间戳
  20. 真机最小化安装centos7 网卡驱动

热门文章

  1. 用这些进行PDF翻译,双语对照、翻译后排版不变、还免费!
  2. Java的高并发编程系列(三)
  3. Markdown表格——复杂表格
  4. 购买周期 python-用Python实现一个基于EG协整法的跨周期套利策略
  5. 智慧电力信息化系统建设整体方案
  6. 项目采集自动刷新 php,PHP168 CMS自动采集-PHP168 CMS自动更新-齐博CMS站群管理系统...
  7. C#中MessageBox用法大全(附效果图)
  8. JAVA调用U盾进行客户认证实例
  9. ScreenCapture API – QTP截屏工具
  10. Movavi Screen Capture Studio 10.2.0 特别版 Mac 屏幕录像工具