北航计算机组成P1推荐题汇总
北航计算机组成P1推荐题目汇总
题目怎么来的
偷来的(搓手手- 如果你看了一下推荐题目的
URL
的话,你会发现cscore
简直是天生为爬虫而生的,甚至参数都已经写在URL
里面了,这不是勾引是什么?http://cscore.buaa.edu.cn/#/problem?ProblemId=334&PieId=1202
PieId
- 似乎是每个P的编号,每年的都不一样,2306的
1202
代表推荐题目,其他的大都爬不到(悲
- 似乎是每个P的编号,每年的都不一样,2306的
ProblemId
- 下辖的题目编号,额,毫无规律可言,建议遍历爬取
- 但是似乎每年相同模块(例如推荐题目)的相同题目编号都有题目(未经
- 以及题目按照难度依次上升(笔者认为的,毫无参考价值(bushi )
源码获取
组合电路
- 过于简单,仅有提示
1202-405 FloatType
module FloatType( |
1202-202 Comparator
cin = 1'b1; |
- 核心就是一个四位的行波全加器,为了实现减法电路
1202-424 Voter
module VoterPlus( |
1202-102 ALU
module alu( |
- 注意使用拓展位的减法电路实现比较即可
有限状态机
1202-334 Drink
为什么我航的售卖机没有一键退币功能,大一被坑了多少饮料- 本题似乎是一个
Moore
型优先状态机的问题,但是我决定使用我的新结构,所以我们使用Mealy
机+Register
的方式解决输出不与状态同步的问题 - 四个状态还是很好想的,
售货机没吞钱
售货机吞0.5元
售货机吞1元
售货机吞1.5元
,然后就是状态转移方程了 - 提供一个我使用的新结构框架(
应该没有泄露源码之嫌)module drink(
input clk,
input reset,
input[1: 0] coin,
output reg drink,
output reg[1: 0] back
);
//定义状态
parameter s0 = 2'b0;
......
//定义寄存器变量
reg[1: 0] state, next_state;
reg next_drink;
reg[1: 0] next_back;
always @(posedge clk or posedge reset) begin
if (reset) begin
//复位
......
end else begin
//状态转移
state <= next_state;
back <= next_back;
drink <= next_drink;
end
end
always @(*) begin
//默认赋值
next_back = 2'b0;
next_drink = 1'b0;
next_state = state;
case (state)
s0: begin
//状态转移
......
end
......
default: begin
//......
end
endcase
end
endmodule
1202-145 String
- 其实本质是课下题的升级版,对于左括号进行记录即可
- 多重括号的辨别使用一个变量寄存左括号数量即可
- string状态没有分开,看起来有一点乱
- 将带有左括号未匹配时单独分出状态,这样大概不会显得乱吧
- string状态没有分开,看起来有一点乱
1202-336 IntCheck
- 第一,读到
;
语句才截止,所以要考虑每个状态遇到;
的情况 - 第二,多个标识符可以复用状态,详情请看下面状态转移图
- 第三,不要在小情侣后面码代码
查看原图
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Trash Bin for Chi!
评论