当前位置: 首页 > news >正文

VL22 根据状态转移图达成时序电路

VL22 根据状态转移图实现时序电路

在这里插入图片描述
思路一:

`timescale 1ns/1ns
module seq_circuit(
input                C   ,
input                clk ,
input                rst_n,
output   wire        Y
);
reg [1:0] state , new_state;
parameter s0 = 2'b00;
parameter s1 = 2'b01;
parameter s2 = 2'b10;
parameter s3 = 2'b11;
always @( *) begin
case(state)
s0 : new_state = C ? s1 : s0;
s1 : new_state = C ? s1 : s3;
s2 : new_state = C ? s2 : s0;
s3 : new_state = C ? s2 : s3;
default : new_state = state;
endcase
end
always @( posedge clk , negedge rst_n) begin
if(!rst_n)
state <= s0;
else
state <= new_state;
end
assign Y = ((state == s3 | (state == s2 & C== 1))&(rst_n == 1'b1)) ? 1 : 0;
endmodule

注意的是:
1.new_state 的计算是组合逻辑,要用 = 。
2.在s2状态时候,Y和C有关系。
3.清晰的两段式结构,一个always块计算new_state,另一个always块完成state的变化。

思路二:
在这里插入图片描述
找出等于1的各项式子,加起来,写出来,可以求得:

D1 = Q1&Q0 | ~Q1&Q0&(~C) | Q1 & ~Q0 &C ;
D0 = ~Q1 & ~Q0 & C |~Q1&Q0 |Q1&Q0& ~C;
Y = Q1&Q0 | Q1&~Q0&C;

代码如下:

`timescale 1ns/1ns
module seq_circuit(
input                C   ,
input                clk ,
input                rst_n,
output   wire        Y
);
reg Q1,Q0;
wire D1,D0;
always @ (posedge clk , negedge rst_n) begin
if(!rst_n) begin Q1<= 0;Q0<= 0 ;end
else begin
Q1 <= D1;
Q0 <= D0;
end
end
assign D1 = Q1&Q0 | ~Q1&Q0&(~C) | Q1 & ~Q0 &C ;
assign D0 = ~Q1 & ~Q0 & C |~Q1&Q0 |Q1&Q0& ~C;
assign Y = Q1&Q0 | Q1&~Q0&C;
endmodule

思路二的另一种写法:

`timescale 1ns/1ns
module seq_circuit(
input                C   ,
input                clk ,
input                rst_n,
output   wire        Y
);
reg Q1,Q0;
always @ (posedge clk , negedge rst_n) begin
if(!rst_n) begin Q1<= 0;Q0<= 0 ;end
else begin
Q1 <= Q1&Q0 | ~Q1&Q0&(~C) | Q1 & ~Q0 &C ;
Q0 <=  ~Q1 & ~Q0 & C |~Q1&Q0 |Q1&Q0& ~C;
end
end
assign Y = Q1&Q0 | Q1&~Q0&C;
endmodule

去掉D1,D0更简洁。

http://www.jsqmd.com/news/285682/

相关文章:

  • 学习进度 6
  • 基于深度学习的苹果检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • 人群仿真软件:Pathfinder_(9).用户界面与工具栏详解
  • 腾讯云的EdgeOne部署
  • 什么是二维批量归一化操作,如何使用BatchNorm2d层
  • 【个人随笔】我的第一篇博客
  • 人群仿真软件:Pathfinder_(5).人群行为设置
  • 人群仿真软件:Pathfinder_(6).出口与路径定义
  • 人群仿真软件:Pathfinder_(4).环境建模与场景创建
  • SaaS、PaaS、IaaS?
  • 全网最全MBA必备AI论文工具TOP9:开题报告文献综述全解析
  • 测试失败堆成山?用机器学习快速定位根本原因,研发效率翻倍!
  • 北京InfoComm China二十周年:二十年成就亚洲极具影响力的专业视听行业盛会
  • 【2026年-03期】Collaborative evolution between AI and humans
  • 靠口碑翻身的作品!董子健导演首作,观众看完直呼走不出来!
  • PCA与K-means聚类结合的语音识别算法 - 教程
  • 《P1939 矩阵加速(数列)》
  • cdn哪家好
  • 使用 Python 脚本自动化管理 Docker 容器:启动、修改密码、删除及系统资源监控
  • 从DEM到等高线:手撕矢量与栅格两种地形表达
  • 智表ZCELL产品V3.5 版发布,新增行列选中操作等功能
  • 自定义广播数据实现网络冲突自检中的问题
  • 深入解析:量化血流动力学新时代:以数据驱动重构临床决策的精准与高效
  • 整数、浮点数的内存中存储
  • AlexNet 迁移学习实战:CIFAR-10 图像分类实验 - 指南
  • element-ui table高度自适应实现分享
  • Linux Rootkit 手法解析(下):深入内核态的“隐形”攻防战
  • Linux Rootkit 手法解析(上):用户态的“隐身术”与检测思路
  • TikTok矩阵工具实操指南:分主体适配与落地流程拆解
  • 人群仿真软件:Pathfinder_(3).人群建模与行为设置