让网页标签页的标题动起来 ♪(´▽`)
前言
如你所见,我的博客的浏览器标签页是会动的 ヾ(≧ ▽ ≦)ゝ
当处于非活动状态之后标题会改变。
教程
在网页HTML的</head>之前或是</body>之前引入:
<script type="text/javascript" src="/js/title.js"></script>
title.js内容如下:
document.addEventListener("visibilitychange", function () { if (document.visibilityState == "hidden") { normal_title = document.title; let titleState = 0; titleInterval = setInterval(() => { document.title = titleState == 2 ...
数字系统设计复习笔记:第十二篇
RISC-V
实在不知道该怎么考了。总不能让你现场设计一个出来吧。
概述
RISC即**精简指令集计算机(Reduced Instruction Set Computer)**的缩写。它是一种 20 世纪 80 年代才出现的 CPU。与传统的CISC CPU相比不仅只是简化了指令系统,而且还通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。
RISC-V由加州大学伯克利分校2010年开发,作为开放的ISA,现由RISC-V基金会管理 (riscv.org)。
寄存器和存储器
寄存器的访问速度比内存快
对内存数据进行操作需要加载和存储
需要执行更多的指令
编译器必须尽可能多地使用寄存器中的变量
只有不常用的变量才会溢出到内存中。
寄存器优化很重要!
RISC-V示例代码
实在不知道讲什么了。作业是把书上的范例代码进行修改。把代码放出来吧。
我肯定不会放在这里。代码已上传至GitHub。
话说网上好像有答案,但是里面也有错:
第?章 RISC-CPU 简介
注意点
clk_gen需要进行2、4分频,虽然用不到。题目中的clk1和clk是两个信号,所有 ...
数字系统设计复习笔记:第十一篇
I2C通信
我觉得不是重点。看一遍就行。
什么是I2C
I2C(Inter Integrated Circuit),双向二线制串行总线协议。它只要两根线:SCL、SDA。显然,它的优点就是节约资源:只要两个IO口就行了。此外,它的协议也很轻量,便于移植。
缺点也很明显:传输速度较慢——至少比SPI慢得多。
和SPI相比呢?
I2C:
优点:
简单性:I2C总线结构相对简单,使用两根信号线(SDA和SCL)进行通信。
多主设备:I2C支持多主设备,允许多个设备在同一总线上通信。
地址方案:每个I2C设备都有唯一的七位设备地址,便于识别。
适合短距离通信:I2C在短距离通信和连接多个设备时表现良好。
劣势:
速度较慢:最快的I2C速度仅为1 Mbps,通常为400 Kbps。
不适合长距离传输:I2C不适合长距离传输,因为信号衰减和干扰可能成为问题。
SPI:
优点:
高速传输:SPI通信速度快,适用于高速数据传输场景。
灵活性:SPI通信相对灵活,适用于不同类型的设备。
稳定性:SPI通信稳定,对时序要求较高。
劣势:
复杂性:SPI通信需要建立连接,协议较复 ...
数字系统设计复习笔记:第十篇
复杂的时序逻辑电路设计
序列检测器
检测10010的产生。
第一步:画出状态转移图
第二步:化简状态状态示意图
第三步:编写逻辑代码
module seqdet ( x, z, clk, rst); input x, clk, rst; output z; reg [2:0] state; //状态寄存器 wire z; parameter IDLE = 3'd0, A = 3'd1, B = 3'd2, C = 3'd3, D = 3'd4, E = 3'd5, F = 3'd6, G = 3'd7; assign z = (state == D && x == 0) ? 1 : 0; //状态为D时又收到了0,表明收到10010,应有输出Z为高 always @(posedge clk or negedge rst) if (!rst) begin ...
数字系统设计复习笔记:第九篇
必考。
阻塞赋值对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。而非阻塞赋值对应的电路结构往往与触发沿有关系,只有在触发沿时才有可能发生赋值的变化。
阻塞赋值
在描述组合逻辑的always块中用阻塞赋值,则综合成组合逻辑的电路结构。
为什么称这种赋值为阻塞赋值呢? 这是因为在赋值时先计算等号右手方向( RHS )部分的值,这时赋值语句不允许任何别的 Verilog 语句的干扰,直到现行的赋值完成时刻,即把 RHS 赋值给LHS 的时刻,它才允许别的赋值语句的执行。
一般可综合的阻塞赋值操作在 RHS 不能设定有延迟(即使是零延迟也不允许)。从理论上讲,它与后面的赋值语句只有概念上的先后,而无实质上的延迟。若在 RHS上加延迟,则在延迟期间会阻止赋值语句的执行,延迟后才执行赋值,这种赋值语句是不可综合的,在需要综合的模块设计中不可使用这种风格的代码.
举个例子:
input A, B, Cin;output Cout;reg T1 , T2 , T3 ; //内部信号reg Cout;always@ (A or B or Cin) begin T1 ...
数字系统设计复习笔记:第八篇
可综合的Verilog
可综合的HDL的语法只是它们自己语言的一个子集。为什么要这么做?
减少综合的次数或运行时间,最快得到良好的综合结果
采用比较简单的综合约束就可以得到时序和面积的要求
提高综合结果网表的性能,简化静态时序分析的过程
什么是逻辑综合?
逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。
标准单元库可以包含简单的单元,如:与非门、或非门、与门和或门等基本逻辑门,也可以包含宏单元,如加法器、多路选择器和触发器等。
综合的一般原则
综合之前一定要进行仿真,这是因为仿真会暴露逻辑错误,所以建议大家这样做。如果不做仿真,没有发现的逻辑错误会进入综合器,使综合的结果产生同样的逻辑错误。
每一次布局布线之后都要进行仿真,在器件编程或流片之前要做最后的仿真。
用 VerilogHDL 描述的异步状态机是不能综合的,因此应该避免用综合器来设计;如果一定要设计异步状态机,则可用电路图输入的方法来设计。
如果要为电平敏感的锁存器建模,使用连续赋值语句是最简单的方法。
语言指导原则
组合逻辑使用阻塞赋值语句描述
时序逻辑使用非阻塞赋 ...
数字系统设计复习笔记:第七篇
状态机
必考,不用想了。一般都是手写代码/代码填空。看好一二三段状态机。
关于两段式和三段式的例子,可以看看另外一篇文章:两段式状态机与三段式状态机
概述
什么是有限状态机?
有限状态机是由寄存器组和组合逻辑构成的硬件时序电路;
其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态;
究竟转向哪一状态不但取决于各个输入值,还取决于当前状态。
状态机可产生在时钟跳变沿时刻进行开关的复杂的控制逻辑,是数字逻辑的控制核心。
有限状态机三要素:
状态(当前状态,下一个状态);
输入信号(事件);
输出控制信号(相应操作)。
Mealy
状态是否改变、怎样改变还将取决于产生下一状态的组合逻辑F的输出,F是当前状态和输入信号的函数。
我们把这种时序逻辑的输出不但取决于状态还取决于输入的状态机称为Mealy状态机。
Moore
有些时序逻辑电路的输出只取决于当前状态,即输出信号=G (当前状态),这样的电路就称为Moore状态机。
如何描述下面的状态机?
一段式
顾名思义,全模块只有一个always,在该模块中既描述状态 ...
数字系统设计复习笔记:第六篇
逻辑模块
感觉超前进位加法器和乘法器是难点。不知道考试会怎么考。还是需要理解才行。
全加器
数据流描述
module full_adder (a, b, cin, sum, cout); //list all inputs and outputs input a, b, cin; output sum, cout; //define wires wire a, b, cin; wire sum, cout; //continuous assign assign sum = (a ^ b) ^ cin; assign cout = (a&cin)|(b&cin)|(a&b); //assign cout = cin & (a ^ b) | (a & b);endmodule
行为级描述
module add_4(A, B, sum, C); input [3 : 0] A, B; output [3 : 0] sum; output C; assign { ...
数字系统设计复习笔记:第五篇
门原语
逻辑门
and/nand
or/nor
xor/xnor
以上六个为多输入单输出
buf/not
以上两个为单输入多输出
gate_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最初的目的不是做电路设计,所以可综合风格的Veri ...
数字系统设计复习笔记:第四篇
系统任务
$display和$write
$display系统任务输出信息到标准输出设备,并带有行结束字符;$write系统任务输出信息到标准输出设备,不带行结束字符。
可以用类似C语言格式化输出的方式打印文本。
例1
module disp; initial begin $display("\\\t%%\n\"\123") ; endendmodule
答案\ %"S
\123的意思是123代表的八进制数对应的ASCII码代表的字符
例2
module disp; initial begin $display("\\%%\123\n\456"); endendmodule
答案\%S.
$display输出列表中数据的显示宽度是自动按照输出格式进行调整的。总是用表达式的最大可能值所占的位数来显示表达式的当前值。可以通过在%和表示进制的字符中间插入一个0,来自动调整显示输出数据宽度的方式。
冷门点,多看看。
对于不定态和高阻态:
十进 ...