2013-06-14 21:39:56
简单ALU(算术逻辑单元)的verilog实现,可实现两数相加、相减,或一个数的加1、减1操作。
小结:
- 要学会看RTL图,能够根据RTL图大致判断功能的正确性
代码:
1 module alu_add_sub( 2 rst_n, 3 clk, 4 oper_cmd, 5 oper_data, 6 dout 7 ); 8 9 parameter DATA_SIZE = 4'd8; //操作数宽度 10 11 input rst_n; 12 input clk; 13 14 input [1:0] oper_cmd; 15 input [2*DATA_SIZE - 1:0] oper_data; 16 17 output [DATA_SIZE:0] dout; 18 19 reg [1:0] oper_cmd_r; 20 reg [2*DATA_SIZE - 1:0] oper_data_r; 21 22 wire [2*DATA_SIZE:0] add_sub_oper; 23 24 reg [DATA_SIZE:0] dout_tmp; 25 reg [DATA_SIZE:0] dout; 26 27 //输入数据打一拍 28 always@(posedge clk) 29 if(!rst_n) 30 begin 31 oper_cmd_r <= 8'd0; 32 oper_data_r <=