数字系统设计复习笔记:第十三篇
前言
我一向是很讨厌形而上学的东西的。奈何考试确实会考概念,故整理一些可能考的简答题。
1-5
简述什么是硬件描述语言? 它的主要作用是什么?
答案硬件描述语言是一种专门用来描述电子电路的功能和行为的编程语言,它可以让工程师在不同的抽象层次上设计复杂的数字逻辑电路,如寄存器传输级(RTL)、行为级和逻辑门级等。
为什么说用硬件描述语言设计的数字逻辑系统具有最大的灵活性并可以映射到任何工艺的电路上?
答案因为硬件描述语言设计的数字逻辑系统主要是在RTL级和行为级,不涉及具体的门电路,因此不依赖工艺,且便于移植。
为什么并发性是 HDL 中的一个重要概念?
并发是 HDL 的一个特点,无法用原理图来建模。
并发允许进行自动综合。
并发允许逻辑仿真器显示有用的系统信息。
并发是对并行运行的真实系统进行建模的必要条件。
答案4
仿真是什么? 为什么要进行仿真?仿真可以在几个层面上进行? 每个层面的仿真有什么意义?
答案仿真是对电路模块进行动态的全面测试。
通过观测被测试模块的输出信号是否符合要求可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。
仿真分为:前仿真,逻辑网 ...
计算机原理与嵌入式系统笔记:第三篇
ARM指令
采用Load-Store结构
固定长度(32bit)指令
三操作数指令格式
条件执行所有指令
一条指令可以装载或存储多个寄存器
ALU操作支持单周期n-bit移位
Load-Store结构
指令集中的数据运算:
不能对存储器中的数据直接进行操作
仅能处理寄存器中的值,而且总是将处理结果放回到寄存器中
对存储器中数据的操作:
仅能将存储器的值 加载(load) 到寄存器中
或将寄存器的值 存储(store) 到存储器中
ARM指令不支持“存储器-存储器”操作!
汇编格式
寄存器传送:
比较:
<opcode2>{<cond>} <Rn>, <shifter_operand>
<opcode2> := CMP | CMN | TST | TEQ
运算:
<opcode3>{<cond>}{S} <Rd>, <Rn>, <shifter_operand>
<opco ...
计算机原理与嵌入式系统笔记:第二篇
ARM指令系统
本课程讲解内容主要基于ARM7处理器
概述
记一下ARM的处理器组成
[{"url":"https://webp.esing.dev/img/image-20240422202917823_2024-4-22_2029_pcgei6p5p3.png","alt":"ARM处理器组成1"},{"url":"https://webp.esing.dev/img/image-20240422202940202_2024-4-22_2029_t8ve74awlo.png","alt":"ARM处理器组成2"}]
加载更多
编程模型
什么是编程模型?
编程模型(Programming Model) 是所有用户可见的寄存器的集合。
用户级程序使用的寄存器:
15个通用32位寄存器(r0~r14)
1个程序计数器PC(r15)
1个当前状态寄存器(CPSR,Current Program Status Register)
r0-r3用于参数传入。如果需要的参数超过4个,则将被置于栈中r11为帧指针寄存器(Frame Poi ...
计算机原理与嵌入式系统笔记:第一篇
绪论
记一记嵌入式系统的设计步骤
嵌入式系统本身引起的设计困难
测试的复杂性
怎么测试系统的实时性
怎么使用真实数据进行测试
有限的可观察性和可控性
嵌入式系统通常不具有键盘和屏幕
难以通过观测内部总线的电信号来了解系统内部运行过程
受限的开发环境
需要专门的模拟仿真软件
嵌入式计算的性能
在一般的计算中,性能都是指平均情况。嵌入式计算的核心是实时计算,在实时系统中,性能必须满足截止时限。
嵌入式系统的设计步骤
需求分析
需求分为功能性和非功能性两部分。
功能性需求:
系统的输入,以及相关输入的输出
非功能性需求:
性能:软件性能度量和满足特定操作的硬截止时限
成本:包括制造成本和一次性工程费用(NRE)
尺寸和重量:对于手持式设备需要严格约束
功耗:对于电池供电系统的重要因素
规格说明:规格说明解释系统做什么,并不涉及如何做
体系结构设计:描述系统如何实现规格的功能
硬件和软件组件的设计:组件设计是为了确保符合体系结构和规格说明的要求
系统集成:将建立的软硬件组件合并成能运转的系统
处理器
什么是处理器?
通用处理器是一个执行存储器中 ...
计算机原理与嵌入式系统笔记:序篇
感谢仲英学辅的《嵌入式系统设计小助手》及老师的PPT对我的帮助
目录
目录
第一篇
绪论、处理器和MU0
第二篇
ARM第一话:处理器模式、CPSR和大小端
第三篇
ARM第二话:非常烦的指令集(上)
第四篇
ARM第三话:非常烦的指令集(下)
第五篇
ARM第四话:流水线!
第六篇
ARM第五话:各种各样的缓存
第七篇
ARM第六话:存储管理单元、地址转换、虚拟内存
第八篇
ARM第七话:IO设备、异常中断,还有功耗
第九篇
MIPS第一话:比较烦的指令集和控制信号
第十篇
MIPS第二话:非常烦的流水线和竞争冒险
第十一篇
总线、存储与IO
第十二篇
嵌入式程序设计与分析
让网页标签页的标题动起来 ♪(´▽`)
前言
如你所见,我的博客的浏览器标签页是会动的 ヾ(≧ ▽ ≦)ゝ
当处于非活动状态之后标题会改变。
教程
在网页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(() => { document.t ...
数字系统设计复习笔记:第十二篇
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 && x ...
数字系统设计复习笔记:第九篇
必考。
阻塞赋值对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。而非阻塞赋值对应的电路结构往往与触发沿有关系,只有在触发沿时才有可能发生赋值的变化。
阻塞赋值
在描述组合逻辑的always块中用阻塞赋值,则综合成组合逻辑的电路结构。
为什么称这种赋值为阻塞赋值呢? 这是因为在赋值时先计算等号右手方向( RHS )部分的值,这时赋值语句不允许任何别的 Verilog 语句的干扰,直到现行的赋值完成时刻,即把 RHS 赋值给LHS 的时刻,它才允许别的赋值语句的执行。
一般可综合的阻塞赋值操作在 RHS 不能设定有延迟(即使是零延迟也不允许)。从理论上讲,它与后面的赋值语句只有概念上的先后,而无实质上的延迟。若在 RHS上加延迟,则在延迟期间会阻止赋值语句的执行,延迟后才执行赋值,这种赋值语句是不可综合的,在需要综合的模块设计中不可使用这种风格的代码.
举个例子:
1234567891011121314151617input A, B, Cin;output Cout;reg T1 , T2 , T3 ; //内部信号reg Cout;always@ (A or B o ...