LV6_多功能数据处理器
题目来源于牛客网
[牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page=1&tab=Verilog篇&topicId=301)
题目
描述
根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数,当select信号为0,输出a;当select信号为1,输出b;当select信号为2,输出a+b;当select信号为3,输出a-b.
接口信号图如下:
输入描述:
clk:系统时钟
rst_n:复位信号,低电平有效
a,b:8bit位宽的有符号数
select:2bit位宽的无符号数
输出描述:
c:9bit位宽的有符号数
代码
`timescale 1ns/1ns
module data_select(
input clk,
input rst_n,
input signed[7:0]a,
input signed[7:0]b,
input [1:0]select,
output reg signed [8:0]c
);
//*************code***********//
/*代码思路:case(select)来执行不同的输出
select = 0: 输出a
select = 1: 输出b
select = 2: 输出a+b
select = 3: 输出a-b*/
always @(posedge clk or negedge rst_n) begin
if(!rst_n)
c <= 0;
else begin
case (select)
2'd0: begin
c <= a;
end
2'd1: begin
c <= b;
end
2'd2: begin
c <= a + b;
end
2'd3: begin
c <= a - b;
end
endcase
end
end
//*************code***********//
endmodule