Verilog语言设计思想和可综合特性

语言设计思想和可综合特性、组合电路设计

Verilog语言设计思想和可综合特性

8bit计数器:

module counter(count,clk,reset)
output count;
input clk,reset;
reg[7:0] count;
reg out;
always @(posedge clk)
if (!reset) count<=0;
else if(count==8'b11111111) count<=0
else count<=count+1;	//不能用循环语句
endmodule

4选1数据选择器:
真值表形式:

module MUX(sel,data,out)
input[3:0] data;
input[1:0] sel;
reg out;
always @(data or sel)
	case(sel)
		2'b00:out<=data[0]
		2'b01:out<=data[1]
		2'b10:out<=data[2]
		2'b11:out<=data[3]
	endcase
endmodule

对真值表进行化简后的逻辑表达式形式:

module MUX(out,data,sel)
output out;
input[3:0] data;
input[1:0] sel;
wire w1,w2,w3,w4;
assign w1=(~sel[1])&(~sel[0])&data[0];//00时选data[0]
assign w2=(~sel[1])&(sel[0])&data[1];//01时选data[1]
assign w3=(sel[1])&(~sel[0])&data[2];//10时选data[2]
assign w4=(sel[1])&(sel[0])&data[3];//11时选data[3]
endmodule

结构型描述方式:

Verilog HDL组合电路设计

组合电路:电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路原来的状态无关。
例:设计3裁判表决电路,当两个或两个以上裁判同意时,判决器输出1,否则输出0。

ABCOUT
0000
0010
0100
0111
1000
1011
1101
1111

抽象型描述方式:

module biaojue(out,in1,in2,in3)
input in1,in2,in3;
output out;
wire[1:0] sum;
reg out;
assign sum=in1+in2+in3;
always @(sum)
	if (sum>=1)
	out=1;
	else
	out=0;
endmodule

例:
2输入1bit信号全加器(考虑来自低位的进位):

ABC_INSUMC_OUT
00000
00110
01010
01101
10010
10101
11001
11111

利用行为描述实现:

module fulladder(SUM,C_OUT,A,B,C_IN);
input A,B,C_CIN
output SUM,C_OUT;
assign SUM=(A^B)^C_IN;
assign{C_OUT,SUM}=A+B+C_IN;
endmodule

2输入8bit全加器:

module eight_bit_fulladder(SUM,C_OUT,A,B,C_IN)
output[7:0] SUM
output C_OUT;
input[7:0] A,B;
input C_IN;
assign{C_OUT,SUM}=A+B+C_IN;
endmodule

超前进位加法器:每级进位由附加的组合电路产生,高位的运算不需等待低位运算完成,因此可以提高运算速度。
对于Nbit全加器,其进位信号是:C_OUT=CN
输出的加法结果是:SUM_OUTn-1=Pn-1 ⨁ \bigoplus Cn-1 n ∈ \in [N,1]



例:数据比较器
4为数值比较器:由高位到低位逐位比较,只有在高位相等时,才进行低位比较。

module four_bits_comp1(F,A,B,C);
parameter comp_width=4;
output[2:0] F;
input[2:0] C;
input[comp_width-1:0] A;
input[comp_width-1:0] B;
reg[2:0] F;
always@(A or B or C)
	if (A>B)
		F=3'b100;
	else if(A<B)
		F=3'b001;
	else
		F=C;
endmodule

例:数据选择器
8选1数选:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值