用SV书写对应的行为模型(接收端),并输出激励中的字节值,奇偶性错误的,输出校验错误
时间: 2024-05-14 09:12:00 浏览: 7
以下是使用SV书写接收端行为模型的示例:
```
module receiver(
input clk,
input rst_n,
input wire [7:0] data_in,
input wire valid,
output wire [7:0] data_out,
output wire ready,
output wire error
);
// 定义状态机的状态
typedef enum logic [2:0] {
IDLE,
RECEIVE,
CHECK
} state_t;
// 定义状态机的当前状态
state_t state;
// 定义存储接收数据的寄存器
logic [7:0] data_reg;
// 定义计数器
logic [2:0] count;
always_ff @(posedge clk, negedge rst_n) begin
if (!rst_n) begin
state <= IDLE;
count <= 0;
data_reg <= 0;
ready <= 0;
error <= 0;
end
else begin
case(state)
IDLE: begin
ready <= 1;
if (valid) begin
state <= RECEIVE;
end
end
RECEIVE: begin
data_reg <= data_in;
count <= 0;
state <= CHECK;
end
CHECK: begin
if (count == 2) begin
if (data_reg == {~data_in[7], data_in[6:0]}) begin
data_out <= data_in;
ready <= 1;
error <= 0;
state <= IDLE;
end
else begin
ready <= 0;
error <= 1;
state <= IDLE;
end
end
else begin
count <= count + 1;
state <= CHECK;
end
end
endcase
end
end
endmodule
```
该行为模型使用状态机来处理接收端的行为。在空闲状态下,输出 `ready` 信号以表示接收端已准备好接收数据。当输入 `valid` 信号为高时,状态机进入接收状态。在接收状态下,输入的数据被存储在 `data_reg` 寄存器中,并将计数器 `count` 重置为0。接下来,状态机进入校验状态,在该状态下,使用计数器 `count` 来跟踪接收到的字节中的位数,并将其与接收到的字节进行校验和比较。如果接收到的字节和校验和匹配,则将接收到的字节存储在 `data_out` 寄存器中,并输出 `ready` 信号以表示接收端已准备好接收更多数据。如果校验和不匹配,则输出 `error` 信号以表示接收端检测到了校验错误,并将状态机重置为初始状态。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)