Pre
Pre梳理
基础知识
原码、反码、补码
正数 :原码 = 反码 = 补码
负数 :原码 :符号位为1,其后为绝对值的原码
反码 :绝对值的原码各位取反
补码 :反码 + 1 (或2^n - x)
计算机中的整数都用补码储存
位宽大小
- 1Byte = 8bit
- 1字 = 4Byte(32位机)
- 在写MIPS程序时,一个寄存器是32位,4字节,MIPS中的offset偏移操作都是以字节为单位的
Logisim
- 模块化设计的思想
- 注意外观以及题目所给要求
- 优雅的赋初值操作:
counter的输出端为initial,把counter设置为stay at max value,然后设置max value (maybe是1),再把initial标签与mux相接就可以啦 - 理解电路的“同步”,这与我们平常写高级语言代码的设计是不同的
- 注意时钟周期要求,学会使用寄存器而不是直接进行输出
Verilog
阻塞赋值与非阻塞赋值
- 时序逻辑,非阻塞赋值(<=);组合逻辑,阻塞赋值(=)
- 组合逻辑和时序逻辑的always块分开
- 不要出现对同一个变量在多个always块中赋值,也不要出现一个变量既用阻塞赋值又用非阻塞赋值
- 判断输出时,可以把输出部分写在always块中,也可以写在always块外使用assign语句,assign相当于是组合逻辑中的一根线,输出会随着输入而发生变化
for example1
2
3
4
5
6
7
8
9
10
11always @(posedge clk, posedge rst) //异步复位
begin
//
end
assign ans = () ? 1'b1 : 1'b0;
// another
always @(posedge clk,posedge rst)
begin
//
ans = () ? 1'b1 : 1'b0;
end
状态机
- Moore与Meely的选择
不用在最初设计电路时过多区分
Moore机可以满足输出一个cycle的要求
Meely机可以满足最早输出(越快越好的要求)
(详见L4 P25 波形示意图) - 关键是次态逻辑与输出逻辑的设计
设计次态逻辑时,先想清楚你需要哪些状态,然后对这些状态进行编码,然后设计好状态转移图,根据图去编写代码
设计输出逻辑时,就要想清楚是Moore还是Meely,也就是说我的输入与当前输出是否有关
符号数处理
最保险的处理有符号数a:
1 | $signed($signed(a)<<b) |
异步复位处理
1 | always @(posedge clk,posedge rst) |
初始化操作
1 | initial |
细节
- 注意不要忘记begin后的end,case后的default和endcase,以及最后的endmodule
- 模块端口定义的最后一行不要加’,’
1
2
3
4
5module counting(
input [1:0] num,
input clk,
input ans //不加','
);//';'不要忘记
例题标程
1 |
|
MIPS
伪指令
1 |
|
syscall
1 | #字符串输出 |
上机总结
写在前面
此次pre考的比较基础,只过了Verilog,感觉对于基础知识模型要加强学习
Mealy机
此次Logisim和Verilog都考察的是Mealy型状态机
Mealy机的基本电路设计
失误地方
- 题意不清,应该是对于每个输入都会判断与之前输入之和是否大于等于5
- 寄存器的使用,请注意en端口与clk端口
助教学长的标程
有疑问:
- 没有实现大于零时清空寄存器
分析:使用mux实现的,如果all大于等于5,mux的选择端为1,mux输出为0,那么下一个时钟上升沿到来之时,register存入0,实现寄存器清零 - 为什么这是Mealy机呀,感觉输出状态是由输入状态唯一决定的
分析:每一个时钟上升沿到来,寄存器存入当前多路选择器的输出值,与in相加并判断是否大于等于5(Mealy)
Verilog
考了异步复位以及状态转移
1 | assign out = ((status == `S2)&(in == 1)) ? 1'b1 : 1'b0; //题目要求是Mealy机 |
MIPS
此次MIPS考察了求平方根,没有时间了就正向遍历,t了一个点,据大家讨论,反向遍历可以全过,正确做法是二分查找或者移位,主要考察对于循环的使用
碎碎念
- 掌握基础知识,比如verilog部分就是因为重点复习了状态机和异步复位等,在之前就把问题解决了(当然考到了这些问题),总之,多思考,多求教,多练习,帆帆加油!
- 对于机房环境,电脑容易卡掉线,不要慌多刷新几次;比较昏暗,注意键盘吧;不要被旁边同学影响了,专注自己,细心耐心静心,加油吧!
- Post title:Pre
- Post author:Coooookie
- Create time:2023-01-02 20:28:46
- Post link:https://coooookie0913.github.io/2023/01/02/Pre/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.