数字逻辑Verilog描述电路的方法(2022.3.17)

数字逻辑Verilog描述电路的方法(2022.3.17)_第1张图片

 一、结构描述

数字逻辑Verilog描述电路的方法(2022.3.17)_第2张图片

 

 数字逻辑Verilog描述电路的方法(2022.3.17)_第3张图片

 数字逻辑Verilog描述电路的方法(2022.3.17)_第4张图片

数字逻辑Verilog描述电路的方法(2022.3.17)_第5张图片

 数字逻辑Verilog描述电路的方法(2022.3.17)_第6张图片

 

 

 

二、用行为描述的方法

1.D触发器有一个异步复位端clrb

数字逻辑Verilog描述电路的方法(2022.3.17)_第7张图片

 

module dff(d,clk,clrb,q);
input clk,clrb;
input d;
output q;
reg q;
always@(posedge clk or posedge clkb)
  begin
    if(clrb)
       q<=0;
    else
       q<=d;
  end
endmodule

2.采用行为描述时注意事项

数字逻辑Verilog描述电路的方法(2022.3.17)_第8张图片

三、数据流描述

 数字逻辑Verilog描述电路的方法(2022.3.17)_第9张图片

 数字逻辑Verilog描述电路的方法(2022.3.17)_第10张图片

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Iqd5aOr6YCD6YCD4oKswqI=,size_9,color_FFFFFF,t_70,g_se,x_16

 

 数据流描述的2选1MUX

d0274112b2834fcd833950c09308f01a.png

module MUX3(out,a,b,sel);
output out;
input a,b,sel;
assign out=(a&(~b))|(b&sel);
endmodule
module MUXS(out,a,b,sel);
output out;
input a,b,sel;
assign out=sel?b:a;
endmodule

 

三、结构描述

数字逻辑Verilog描述电路的方法(2022.3.17)_第11张图片

 1.结构描述的1位全加器

真值表-->逻辑表达式-->电路结构图-->VerilogHDL

数字逻辑Verilog描述电路的方法(2022.3.17)_第12张图片

 

module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
wire s1,m1,m2,m3;
and m1(m1,a,b);
    m2(m2,b,cin);
    m3(m3,a,cin);
xor s1(s1,a,b);
    sum(sum,s1,cin);
or cout(cout,m1,m2,m3);
endmodule

2.数据流描述的1位全加器

方法一

module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,out;
assign sum=a^b^b^cin;
assign cout=(a&b)|(b&cin)|(a&cin);
endmodule

方法二

module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
assign {cout,sum}=a+b+cin;
endmodule

3.行为描述

module dull_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
reg sum,cout,m1,m2,m3;
always@(a or b or cin)
begin
{cout,sum}=a+b+cin;
end
endmodule

数字逻辑Verilog描述电路的方法(2022.3.17)_第13张图片

 用模块化方式设计的1位全加器顶层设计

module fuu_add(ain,bin,cin,sum,out);
input ain,bin,cin;
output sum,cout;
wire d,e,f;
half_add u1(ain,bin,e,d);//半加器模块调用
half_add u2(e,cin,sum,f);
or u3(cout,d,f);//或门调用
endmodule

【例】半加器定义

module half_add(a,b,so,co);
input a,b;
output so,co;
assign co=a&b;
assign so=a^b;
emdmodule

4位加法器

数字逻辑Verilog描述电路的方法(2022.3.17)_第14张图片

//结构描述
'include "full_add1.v"
module add4_1(sum,cout,a,b,cin);
output[3:0] sum;
output cout;
input [3:0]a,b;
input cin;
full_add1 f0(a[0],b[0],cin,sum[0],cin1);
full_add2 f1(a[1],b[1],cin1,sum[1],cin2);
full_add3 f2(a[2],b[2],cin2.sum[2],cin3);
full_add4 f3(a[3],b[3],cin3,sum[3],cout);
endmodule


//数据流描述
module add4_2(cout,sum,a,b,cin);
output[3:0] sum;
output cout;
input[3:0] a,b;
input cin;
assgin {cout,sum}=a+b+cin;
endmodule

//行为描述
module add4_1(cout,sum,a,b,cin);
output[3:0] sum;
output cout;
input[3:0]a,b;
input cin;
reg[3:0] sum;
reg cout;
always@(a or b or cin)
  begin
    {cout,sum}=a+b+cin;
  end
module

 四、多层次结构电路的设计

Top-down 方法

可以采用文本方式,也可以用图形和文本混合设计的方式。

数字逻辑Verilog描述电路的方法(2022.3.17)_第15张图片

 数字逻辑Verilog描述电路的方法(2022.3.17)_第16张图片

 数字逻辑Verilog描述电路的方法(2022.3.17)_第17张图片

 

 

你可能感兴趣的:(文章,知识点归纳,fpga开发,硬件工程)