计算机原理与嵌入式系统笔记:第一篇
绪论 记一记嵌入式系统的设计步骤 嵌入式系统本身引起的设计困难 测试的复杂性 怎么测试系统的实时性 怎么使用真实数据进行测试 有限的可观察性和可控性 嵌入式系统通常不具有键盘和屏幕 难以通过观测内部总线的电信号来了解系统内部运行过程 受限的开发环境 需要专门的模拟仿真软件 嵌入式计算的性能 在一般的计算中,性能都是指平均情况。嵌入式计算的核心是实时计算,在实时系统中,性能必须满足截止时限。 嵌入式系统的设计步骤 需求分析 需求分为功能性和非功能性两部分。 功能性需求: 系统的输入,以及相关输入的输出 非功能性需求: 性能:软件性能度量和满足特定操作的硬截止时限 成本:包括制造成本和一次性工程费用(NRE) 尺寸和重量:对于手持式设备需要严格约束 功耗:对于电池供电系统的重要因素 规格说明:规格说明解释系统做什么,并不涉及如何做 体系结构设计:描述系统如何实现规格的功能 硬件和软件组件的设计:组件设计是为了确保符合体系结构和规格说明的要求 系统集成:将建立的软硬件组件合并成能运转的系统 处理器 什么是处理器? 通用处理器是一个执行存...
计算机原理与嵌入式系统笔记:序篇
感谢仲英学辅的《嵌入式系统设计小助手》及老师的PPT对我的帮助 目录 目录 第一篇 绪论、处理器和MU0 第二篇 ARM第一话:处理器模式、CPSR和大小端 第三篇 ARM第二话:非常烦的指令集(上) 第四篇 ARM第三话:非常烦的指令集(下) 第五篇 ARM第四话:流水线! 第六篇 ARM第五话:各种各样的缓存 第七篇 ...
让网页标签页的标题动起来 ♪(´▽`)
前言 如你所见,我的博客的浏览器标签页是会动的 ヾ(≧ ▽ ≦)ゝ 当处于非活动状态之后标题会改变。 教程 在网页HTML的</head>之前或是</body>之前引入: 1<script type="text/javascript" src="/js/title.js"></script> title.js内容如下: 123456789101112131415document.addEventListener("visibilitychange", function () { if (document.visibilityState == "hidden") { normal_title = document.title; let titleState = 0; titleInterval = setInterval(() => { documen...
数字系统设计复习笔记:第十二篇
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的产生。 第一步:画出状态转移图 第二步:化简状态状态示意图 第三步:编写逻辑代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465module 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 &&...
数字系统设计复习笔记:第九篇
必考。 阻塞赋值对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。而非阻塞赋值对应的电路结构往往与触发沿有关系,只有在触发沿时才有可能发生赋值的变化。 阻塞赋值 在描述组合逻辑的always块中用阻塞赋值,则综合成组合逻辑的电路结构。 为什么称这种赋值为阻塞赋值呢? 这是因为在赋值时先计算等号右手方向( RHS )部分的值,这时赋值语句不允许任何别的 Verilog 语句的干扰,直到现行的赋值完成时刻,即把 RHS 赋值给LHS 的时刻,它才允许别的赋值语句的执行。 一般可综合的阻塞赋值操作在 RHS 不能设定有延迟(即使是零延迟也不允许)。从理论上讲,它与后面的赋值语句只有概念上的先后,而无实质上的延迟。若在 RHS上加延迟,则在延迟期间会阻止赋值语句的执行,延迟后才执行赋值,这种赋值语句是不可综合的,在需要综合的模块设计中不可使用这种风格的代码. 举个例子: 1234567891011121314151617input A, B, Cin;output Cout;reg T1 , T2 , T3 ; //内部信号reg Cout;always@ (A or ...
数字系统设计复习笔记:第八篇
可综合的Verilog 可综合的HDL的语法只是它们自己语言的一个子集。为什么要这么做? 减少综合的次数或运行时间,最快得到良好的综合结果 采用比较简单的综合约束就可以得到时序和面积的要求 提高综合结果网表的性能,简化静态时序分析的过程 什么是逻辑综合? 逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。 标准单元库可以包含简单的单元,如:与非门、或非门、与门和或门等基本逻辑门,也可以包含宏单元,如加法器、多路选择器和触发器等。 综合的一般原则 综合之前一定要进行仿真,这是因为仿真会暴露逻辑错误,所以建议大家这样做。如果不做仿真,没有发现的逻辑错误会进入综合器,使综合的结果产生同样的逻辑错误。 每一次布局布线之后都要进行仿真,在器件编程或流片之前要做最后的仿真。 用 VerilogHDL 描述的异步状态机是不能综合的,因此应该避免用综合器来设计;如果一定要设计异步状态机,则可用电路图输入的方法来设计。 如果要为电平敏感的锁存器建模,使用连续赋值语句是最简单的方法。 语言指导原则 组合逻辑使用阻塞赋值语句描述 时序逻辑使用非...
数字系统设计复习笔记:第七篇
状态机 必考,不用想了。一般都是手写代码/代码填空。看好一二三段状态机。 关于两段式和三段式的例子,可以看看另外一篇文章:两段式状态机与三段式状态机 概述 什么是有限状态机? 有限状态机是由寄存器组和组合逻辑构成的硬件时序电路; 其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态; 究竟转向哪一状态不但取决于各个输入值,还取决于当前状态。 状态机可产生在时钟跳变沿时刻进行开关的复杂的控制逻辑,是数字逻辑的控制核心。 有限状态机三要素: 状态(当前状态,下一个状态); 输入信号(事件); 输出控制信号(相应操作)。 Mealy 状态是否改变、怎样改变还将取决于产生下一状态的组合逻辑F的输出,F是当前状态和输入信号的函数。 我们把这种时序逻辑的输出不但取决于状态还取决于输入的状态机称为Mealy状态机。 Moore 有些时序逻辑电路的输出只取决于当前状态,即输出信号=G (当前状态),这样的电路就称为Moore状态机。 如何描述下面的状态机? 一段式 顾名思义,全模块只有一个always,在该模块中既描...
数字系统设计复习笔记:第六篇
逻辑模块 感觉超前进位加法器和乘法器是难点。不知道考试会怎么考。还是需要理解才行。 全加器 数据流描述 123456789101112module 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 行为级描述 123456module add_4(A, B, sum, C); input [3 : 0] A, B; output [3 : 0] sum; o...






![[星港游记] 残月、火星与木星](https://webpn.esing.dev/img/starport.webp)