数字系统设计复习笔记:第五篇
门原语
逻辑门
and/nand
or/nor
xor/xnor
以上六个为多输入单输出
buf/not
以上两个为单输入多输出
1234gate_type [instance_name1] (term1, term2, ..., termN), [instance_name2] (term1, term2, ..., termN),...... [instance_nameN] (term1, term2, ..., termN);
多个门同时实例化时,结尾用逗号,最后用分号。第一个端口为输出,其余为输入。
对于多输出门,最后一个为输入。
行为描述建模
你会怎么设计一个二输入与非门?
有些人认为只是一个代表NAND操作者行为的块
还有一些人可能会想到CMOS中的四个门7400芯片中的四个门
在逻辑层面工作的设计者会想到 NAND门的逻辑符号
晶体管级的电路设计者想到的是实现NAND功能的晶体管级电路
在版图设计者的脑海中闪过的是 NAND门的布局
考试要看清书写的层次
可综合的VHDL
Verilog HDL最初的目的不是做电路设计,所以可综合风格的 ...
数字系统设计复习笔记:第四篇
系统任务
$display和$write
$display系统任务输出信息到标准输出设备,并带有行结束字符;$write系统任务输出信息到标准输出设备,不带行结束字符。
可以用类似C语言格式化输出的方式打印文本。
例1
123456module disp; initial begin $display("\\\t%%\n\"\123") ; endendmodule
答案12\ %"S
\123的意思是123代表的八进制数对应的ASCII码代表的字符
例2
123456module disp; initial begin $display("\\%%\123\n\456"); endendmodule
答案12\%S.
$display输出列表中数据的显示宽度是自动按照输出格式进行调整的。总是用表达式的最大可能值所占的位数来显示表达式的当前值。可以通过在%和表示进制的字符中间插入一个0,来自动调整显示输出数据宽度的方式。
冷门点,多看看。 ...
数字系统设计复习笔记:第三篇
结构说明语句
always肯定必考,感觉task和function会二选一。
Verilog 语言中的任何过程模块都从属于以下 4 种结构的说明语句:
initial 说明语句
always 说明语句
task 说明语句
function 说明语句
always
always 语句在仿真过程中是不断活动着的。always语句后跟着的过程块是否执行,则要看它的触发条件是否满足,如满足则运行过程块一次;如不断满足,则不断地循环执行。
12always clk = ~clk; //将无限循环,周期为0,仿真时间无法推进always #5 clk = ~clk; //周期为10的时钟信号
沿触发的always块常描述时序行为,如有限状态机。可将其转换为表示寄存器组和门级组合逻辑的结构,而该结构应具有时序所要求的行为。
电平触发的 always 块常用来描述组合逻辑的行为。可将其转换为表示组合逻辑的门级逻辑结构或带锁存器的组合逻辑结构,而该结构应具有所要求的行为。
一个模块中可以有多个always块,它们都是并行运行的,并没有前后之分。
wait
和always @(...)的敏 ...
数字系统设计复习笔记:第二篇
赋值语句
我说这个必考,因为真会考。
阻塞赋值
使用=进行。
赋值语句执行完后,块才结束;
b 的值在赋值语句执行完后立刻就改变的;
在时序逻辑中使用时,可能会产生意想不到的结果。
123456reg b,c;always @(posedge clk) begin b=a;//不建议使用 c=b;//不建议使用 end
有的仿真器可以综合成D触发器,但是不推荐。
在 三段式状态机 中,描述次态逻辑和输出逻辑的电路必须使用阻塞赋值,表明为组合电路。
状态机
非阻塞赋值
使用<=进行赋值。
在语句块中,上面语句所赋的变量值不能立即就为下面的语句所用;
块结束后才能完成这次赋值操作,而所赋的变量值是上次赋值得到的;
在编写可综合的时序逻辑模块时,这是最常用的赋值方法。
例:下面代码会发生什么?
12345always @(posedge clk) begin b<=a; a<=b; end
答案这俩会交换位置。因为:
在时钟沿到来前,两个表达式并行运算,已经确定好结果;
时钟沿到来 ...
数字系统设计复习笔记:第一篇
常用缩写
我猜必考,你觉得呢?
VHDL: VHSIC Hardware Description Language
VHSIC: Very High-Speed Integrated Circuit
HDL: Hardware Description Language
CAD: Computer-Aided Design
EDA: Electronic Design Automation
LSI: Large Scale Integration
ULSI: Ultra-Large Scale Integration
ASCII: American Standard Code for Information
ISO: International Standards Organization
ASIC: Application-Specific Integrated Circuit
FPGA: Field-Programmable Gate Array
PLA: Programmable Logic Array
PAL: Programmable Array Logic
PLD: Pr ...
数字系统设计复习笔记:序篇
笔记内含大量图片,流量警告
前言
简单整理一下笔记,因为 我实在不知道怎么考
纯写代码?概念?填空?
老师已经声明没有历年试题了。听学长说考概念比较多,纯写代码反而不多。
不管怎么样,整整看吧。
2024.04.20 大致整理完了。最后两个单元实在不想多看,毫无头猪。
2024.04.26 整理了一些简答题
复习资料
所有的PPT
《Verilog数字系统设计教程》第二版
(可选)刷点题!
HDLBits
https://www.fpga4student.com/
https://github.com/
目录
标题后数字为对应PPT章节
目录
第一篇
概念、变量类型、运算符 0-4
第二篇
各种各样的语句:块、赋值、条件、生成 4-5
第三篇
结构说明语句、任务和函数 6
第四篇
非常多的系统任务 6-7
第五篇
门原语、行为建模和UDP 9
第六篇
非常复杂的加法器乘法器、总线和流水线 10
第七篇
状态机:一段式,两段式,还有三段式 12
第八篇
可综合的Verilog与代码风格:好的开始 13
第九篇
阻塞与非阻塞:时序还是组合 14
第十篇
复杂的时序逻辑电路 ...
两段式状态机与三段式状态机
前言
上课时讲了两段式状态机和三段式状态机,不过对于概念依旧有点模糊。自己记了一点,以便期末回顾用。
一般来说,模块内有几个always就是几段式。但是具体情况还需看代码分析。
参考资料
Verilog状态机常见三种写法
状态机的一段式、二段式、三段式的区别-电子发烧友网
Verilog实现二段式和三段式有限状态机-CSDN博客
对于经典三段式状态机的自己之前一些认识的误区-CSDN博客
一段式
顾名思义,全模块只有一个always,在该模块中既描述状态转移,又描述状态的输入和输出。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465module fsm(Clock,Reset,A,K2,K1,state); input Clock, Reset, A; output K2, K1; output [1:0] state; reg K2, K1; reg [1:0] ...
Verilog中状态机的不同编码方式
本站分享资源仅供学习交流使用,请支持正版。学习资源请于下载后24小时内删除。
前言
上课讲了同步状态机及多种编码风格,然而老师并没有展开来细讲 (;´д`)ゞ
参考资料
安利一本书:《FPGA之道》,写的蛮不错。
参考第5章2小节。
状态编码
状态编码,是使用特定数量的寄存器,通过特定形式的取值集合,将状态集合表示出来的过程。这一工作通常是由编译器完成的,我们可以通过修改编译选项或者添加综合约束的方式来影响状态编码的结果。
编码类型
常见的编码风格有:
Binary
Gray
Johnson
One-hot
Sequential
Define your own
...
下面简单展开讲讲。
Binary
先讲最简单的二进制码,不过我感觉独热码更简单一些
顾名思义,就是二进制。优点是编码简单,符合计数规则。
Gray
格雷码这玩意设计时用于通信,现在则用来减少组合逻辑电路中竞争与冒险的出现。毕竟它相邻的两个状态中,只有一位不同,可以大大降低竞争冒险风险。
但是它的缺点也很明显,即状态机必须为顺序变化的,要么正序要么倒序。因此它适合分支较少的状态机。
Johnson
上课没说,可能 ...
内部未引出GPIO16的ESP8266使用休眠功能
前言
最近一直在做甘草酸不酸的墨水屏阅读器,买了一些8266.拿到手焊接烧录之后才发现有的根本不走时,但是时钟芯片是功能正常的。
一共买了两种:一种是咸鱼5元包邮的,一种是10元安信可的,如下图:
结果右边那款有的能走时,有的不行,非常难受~
去群里问了下万能的群友,得知部分8266批次因为内部未引出用于休眠唤醒的GPIO16,因此时钟模式下无法正常唤醒,导致问题发生。我测试了一下,安信可的均无问题,右边丐版(?)有一半的有问题。贵的东西缺点只有贵
解决方法
按照群里大神 @4061N 的方法,如下图进行飞线:
其中R阻值可为100k/220k,330k未经过测试,910k不行。
确实神奇,我愿称之为赛博华佗
飞完之后就可以正常走时辣!缺点是耗电量会有些微提升。个人估算,采用这种方法修复后的时钟走时比正常走时多损耗10%的电量。
原理
2024.03.21 暂无,还在催群内大佬讲解。等热风枪到了开个盖看看里面啥样子^ ^
2024.03.22 大佬解答了,原因如下:
2024.03.23 拿热风枪开个盖看看:
这下高下立判了
但是只花一半的钱就能搞到一片大差不差的8266也 ...
非常简单的基准电流源设计
先说结论:PSRR一坨,工艺角完全不抗。太差!
设计参考
《模拟集成电路专题实验指导书》
P54 带隙基准设计
P79 过温保护设计 电路图