T
toffee_pie
Guest
lời chào tất cả,
có thể bất cứ ai có Verilog kỹ năng giúp tôi thực hiện điều này ALU, tôi muốn có được trước hết là hoạt động chức năng cơ bản trước khi tôi chuyển sang những nhiệm vụ khó khăn hơn.
It wont biên dịch, tôi nhận được một lỗi với một phần endmodule?còn tôi cần một reg để lưu trữ các bit tràn và làm việc ra ký kết và đầu ra unsigned?/ / Verilog MÃ/ / 'Timescale 10ns
module ALU (a, b, cin, Op, CLK, resetb, C [s 15:0], s, ov)sản lượng đã ký C [s 15:0]; / / 2 của khen đã ký kết từ 16 bit đầu ra
sản lượng ov; / / Kết quả của việc bổ sung, trừ là
/ / Nghĩa vụ phải phù hợp với
/ / Trong các bước quan trọng được sử dụng để đại diện cho những con số.
/ / Nếu 'n' bit được sử dụng để đại diện cho số ký
/ / Ở 2's bổ sung
/ / Đề án, sau đó phải được kết quả trong khoảng
/ /-2n-1 đến 2n-1-1.
/ / Nếu kết quả không phù hợp trong phạm vi này, sau đó một số học
/ / Tràn bộ nhớ đã xảy ra, điều này được sử dụng cho hoạt động ký kết.đầu vào CLK, resetb; / / hệ thống đồng hồ @ 100MHz, đồng bộ
/ / Đặt lại hệ thống hoạt động thấp
input [02:00] Op; / / gán ALU một trong 8 toán hạng của Chỉ thị
input [15:00] a, b; / / unsigned 16 bit toán hạng đầu vào để ALU
đầu vào cin, s; / / Carry tại, Sum Trong/ / Nội bộ các nút
dây [15:00] a, b;
reg ký [15:00] c; / / đầu ra reg
reg ký s;
reg ký ov;tham số WIDTH = 'D16;
Tham số ADD_AB = 3'b000; / / Ngoài ra -> c = a b
Tham số SUB_AB = 3'b001; / / trừ -> c = a - b
Tham số MUL_AB = 3'b010; / / phép nhân -> c = a * b
Tham số AND_AB = 3'b011; / / và -> c = a & b
Tham số OR_AB = 3'b100; / / hoặc -> c = a | b
Tham số XOR_AB = 3'b101; / / xor -> c = a ^ b
Tham số SHIFT_LEFT_A = 3'b110; / / dịch chuyển trái -> c = a>> 1
Tham số SHIFT_RIGHT_A = 3'b111; / / dịch chuyển quyền -> c = b>> 1luôn luôn @ (một hoặc b hoặc op) bắt đầu
/ / Lets làm hoạt động Arithmetic
bắt đầu
if (op [02:01] == 2'b00) bắt đầu
trường hợp (op [02:00])
3'b000: c = a b; / / Ngoài
3'b001: c = a - b; / / trừ
/ / 3'b010: c = a * b; / /
default: c = 16'bx;
endcase
/ / overflow = c [15] ^ c [14];
cuối/ / Lets làm hoạt động Hợp Lý
else if (op [02:01] == 2'b01) bắt đầu
trường hợp (op [02:00])
3'b011: c = a & b; / / hợp lý và
3'b100: c = a | b; / / hợp lý hoặc
3'b111: c = a ^ b; / / logic exor
default: c = 16'bx;endcase
endmodule
Last edited by toffee_pie vào ngày 01 tháng 11 năm 2009 23:15; edited 3 lần trong tổng số
có thể bất cứ ai có Verilog kỹ năng giúp tôi thực hiện điều này ALU, tôi muốn có được trước hết là hoạt động chức năng cơ bản trước khi tôi chuyển sang những nhiệm vụ khó khăn hơn.
It wont biên dịch, tôi nhận được một lỗi với một phần endmodule?còn tôi cần một reg để lưu trữ các bit tràn và làm việc ra ký kết và đầu ra unsigned?/ / Verilog MÃ/ / 'Timescale 10ns
module ALU (a, b, cin, Op, CLK, resetb, C [s 15:0], s, ov)sản lượng đã ký C [s 15:0]; / / 2 của khen đã ký kết từ 16 bit đầu ra
sản lượng ov; / / Kết quả của việc bổ sung, trừ là
/ / Nghĩa vụ phải phù hợp với
/ / Trong các bước quan trọng được sử dụng để đại diện cho những con số.
/ / Nếu 'n' bit được sử dụng để đại diện cho số ký
/ / Ở 2's bổ sung
/ / Đề án, sau đó phải được kết quả trong khoảng
/ /-2n-1 đến 2n-1-1.
/ / Nếu kết quả không phù hợp trong phạm vi này, sau đó một số học
/ / Tràn bộ nhớ đã xảy ra, điều này được sử dụng cho hoạt động ký kết.đầu vào CLK, resetb; / / hệ thống đồng hồ @ 100MHz, đồng bộ
/ / Đặt lại hệ thống hoạt động thấp
input [02:00] Op; / / gán ALU một trong 8 toán hạng của Chỉ thị
input [15:00] a, b; / / unsigned 16 bit toán hạng đầu vào để ALU
đầu vào cin, s; / / Carry tại, Sum Trong/ / Nội bộ các nút
dây [15:00] a, b;
reg ký [15:00] c; / / đầu ra reg
reg ký s;
reg ký ov;tham số WIDTH = 'D16;
Tham số ADD_AB = 3'b000; / / Ngoài ra -> c = a b
Tham số SUB_AB = 3'b001; / / trừ -> c = a - b
Tham số MUL_AB = 3'b010; / / phép nhân -> c = a * b
Tham số AND_AB = 3'b011; / / và -> c = a & b
Tham số OR_AB = 3'b100; / / hoặc -> c = a | b
Tham số XOR_AB = 3'b101; / / xor -> c = a ^ b
Tham số SHIFT_LEFT_A = 3'b110; / / dịch chuyển trái -> c = a>> 1
Tham số SHIFT_RIGHT_A = 3'b111; / / dịch chuyển quyền -> c = b>> 1luôn luôn @ (một hoặc b hoặc op) bắt đầu
/ / Lets làm hoạt động Arithmetic
bắt đầu
if (op [02:01] == 2'b00) bắt đầu
trường hợp (op [02:00])
3'b000: c = a b; / / Ngoài
3'b001: c = a - b; / / trừ
/ / 3'b010: c = a * b; / /
default: c = 16'bx;
endcase
/ / overflow = c [15] ^ c [14];
cuối/ / Lets làm hoạt động Hợp Lý
else if (op [02:01] == 2'b01) bắt đầu
trường hợp (op [02:00])
3'b011: c = a & b; / / hợp lý và
3'b100: c = a | b; / / hợp lý hoặc
3'b111: c = a ^ b; / / logic exor
default: c = 16'bx;endcase
endmodule
Last edited by toffee_pie vào ngày 01 tháng 11 năm 2009 23:15; edited 3 lần trong tổng số