ST6M68FQ-D2出现了一个问题

DTV故障排查

这次在顺达的单,ST6M68FQ-D2出现了一个问题,整个订单有500台,居然会有25片出现DTV无信息或者花屏的现象。工程师今天搞了一天,到现在为此没有没有找到根本的原因。本来打算明天与客户一起去香港。可是这个问题没有解决,去也是没有用。所以尤工明天的主要任务就是解决这个问题。说来这个问题也确实是非常的奇怪,他与信号的强度又没有关系,而且要放一会儿才会有这个现象,时间越久,现象越严重。但是测温度也只有44度。刚开始还以为是华邦的SDRAM的问题,因为有些板换了这个问题就解决了。真是不可理解。

### 设计思路 为了实现一个具有六个状态(ST1至ST6)的有限状态机,可以采用同步时序逻辑设计方法。以下是具体的设计方案: #### 状态定义 通过参数化的方式定义各个状态: ```verilog parameter ST1 = 3'b001; parameter ST2 = 3'b010; parameter ST3 = 3'b011; parameter ST4 = 3'b100; parameter ST5 = 3'b101; parameter ST6 = 3'b110; ``` #### 输入与输出 - **输入信号**: `DIN` 和复位信号 `RST_N`。 - **输出信号**: 当前状态对应的数值 `OUT`。 #### 工作模式 - 复位时,默认进入初始状态 `ST1`。 - 如果输入 `DIN=1`,按照逆向循环顺序切换状态:`ST1 -> ST6 -> ST5 -> ST4 -> ST3 -> ST2 -> ST1`。 - 如果输入 `DIN=0`,按照正向循环顺序切换状态:`ST1 -> ST2 -> ST3 -> ST4 -> ST5 -> ST6 -> ST1`。 --- ### Verilog 实现代码 以下是一个完整的 Verilog 描述,用于实现该六状态有限状态机: ```verilog module FSM_6States ( input wire clk, // 时钟信号 input wire rst_n, // 异步低电平复位信号 input wire din, // 输入控制信号 output reg [2:0] out // 输出当前状态编号 ); // 定义状态常量 parameter ST1 = 3'b001; parameter ST2 = 3'b010; parameter ST3 = 3'b011; parameter ST4 = 3'b100; parameter ST5 = 3'b101; parameter ST6 = 3'b110; reg [2:0] current_state; // 当前状态寄存器 reg [2:0] next_state; // 下一状态寄存器 // 同步状态更新过程 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin current_state <= ST1; // 初始化为 ST1 end else begin current_state <= next_state; // 更新到下一状态 end end // 组合逻辑计算下一状态 always @(*) begin case (current_state) ST1: begin if (din == 1'b1) next_state = ST6; // DIN=1 转入 ST6 else next_state = ST2; // DIN=0 转入 ST2 end ST2: begin if (din == 1'b1) next_state = ST5; // DIN=1 转入 ST5 else next_state = ST3; // DIN=0 转入 ST3 end ST3: begin if (din == 1'b1) next_state = ST4; // DIN=1 转入 ST4 else next_state = ST4; // DIN=0 转入 ST4 end ST4: begin if (din == 1'b1) next_state = ST3; // DIN=1 转入 ST3 else next_state = ST5; // DIN=0 转入 ST5 end ST5: begin if (din == 1'b1) next_state = ST2; // DIN=1 转入 ST2 else next_state = ST6; // DIN=0 转入 ST6 end ST6: begin if (din == 1'b1) next_state = ST1; // DIN=1 转入 ST1 else next_state = ST1; // DIN=0 转入 ST1 end default: next_state = ST1; // 默认回到 ST1 endcase end // 输出逻辑 always @(*) begin case (current_state) ST1: out = 3'd1; ST2: out = 3'd2; ST3: out = 3'd3; ST4: out = 3'd4; ST5: out = 3'd5; ST6: out = 3'd6; default: out = 3'd0; endcase end endmodule ``` --- ### 状态转换图 以下是对应的状态转换图描述: | 当前状态 | 输入 DIN=0 的下一状态 | 输入 DIN=1 的下一状态 | |----------|------------------------|------------------------| | ST1 | ST2 | ST6 | | ST2 | ST3 | ST5 | | ST3 | ST4 | ST4 | | ST4 | ST5 | ST3 | | ST5 | ST6 | ST2 | | ST6 | ST1 | ST1 | 图形表示如下: ``` ┌───────────┐ │ ST1 ├───────┬───> ST6 └──────┬────┘ │ │ ↓ v │ ST2 ←───────┬───> ST5 ↑ │ │ │ ↓ │ ST3 <────── ST4 < ``` --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值