摘要: 这个就是需要对a 进行打一拍last_a<=a; 需要理解的点是打一拍的last_a是落后a一个时钟周期的,也就是对当前时刻使用a时候,此时的last_a是a的上一时刻的值。 `timescale 1ns/1ns module edge_detect( input clk, input rst_n, 阅读全文
posted @ 2024-08-26 17:12 段星儿 阅读(14) 评论(0) 推荐(0)
摘要: reg [3:0] rom [7:0];变量名称rom之前的[3:0]表示每个数据具有多少位,指位宽;变量名称rom之后的[7:0]表示需要多少个数据,指深度,注意这里深度为8(和输入地址addr一致); always 里面的else部分的写法是难点,这里是因为只需要初始化,其余状态就保持存储的原因 阅读全文
posted @ 2024-08-26 16:57 段星儿 阅读(16) 评论(0) 推荐(0)
摘要: 和上一题的第一段完全相同,第二段只是根据状态转移有部分改变,本体使用三段式状态机来写,第三段写法和上一题不一样。 `timescale 1ns/1ns module seq_circuit( input C , input clk , input rst_n, output wire Y ); re 阅读全文
posted @ 2024-08-26 16:31 段星儿 阅读(48) 评论(0) 推荐(0)
摘要: 根据给的状态转移表知道有两个状态:第一列的为current_state,第二三列为next_state,且仅当current_state==11时候Y为1(使用()?:语法实现)。 三段式状态机的流程: 第一段:时序逻辑,公式化写法 第二段:组合逻辑,这里要注意always @(*)是固定写法,不能 阅读全文
posted @ 2024-08-26 16:16 段星儿 阅读(55) 评论(0) 推荐(0)