9.12数字逻辑

rst?

`timescale 1ns/1ns
module main_mod(
	input clk,
	input rst_n,
	input [7:0]a,
	input [7:0]b,
	input [7:0]c,
	
	output [7:0]d
);
wire [7:0]m,n;
sub_mod mod_ab(
	.clk(clk),
	.rst_n(rst_n),
	.data_a(a),
	.data_b(b),
	.data_c(m)
);
sub_mod mod_bc(
	.clk(clk),
	.rst_n(rst_n),
	.data_a(b),
	.data_b(c),
	.data_c(n)
);
sub_mod mod_mn(
	.clk(clk),
	.rst_n(rst),
	.data_a(m),
	.data_b(n),
	.data_c(d)
);
endmodule
module sub_mod(
	input clk,
	input rst_n,
	input[7:0]data_a,
	input[7:0]data_b,
	output reg[7:0]data_c
);
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
data_c<=0;
end
else if(data_a>data_b)begin
data_c<=data_b;
end
else begin
data_c<=data_a;
end
end
endmodule

四位数值比较器

a与b都只有01

如果a要大于b,那么a为1,b为0,y2=a&!b

如果b要大于a,那么b为1,a为0,y0=!a&b

如果相等,那么y2,y0都不成立,y1=!(y2|y0)

9.12数字逻辑_第1张图片

写一个每位的比较器模块,然后在主模块中不断循环调用 

`timescale 1ns/1ns

module comparator_4(
	input		[3:0]       A   	,
	input	   [3:0]		B   	,
 
 	output	 wire		Y2    , //A>B
	output   wire        Y1    , //A=B
    output   wire        Y0      //A

声明自模块,带;,带类名

9.12数字逻辑_第2张图片

与,或,非,异或

a^b保证a与b不同,再与上a,表示a为1,b与a不同,b为0,则a>b

你可能感兴趣的:(fpga开发)