verilog介绍
verilog一般指verilog hdl。verilog hdl是一种硬件描述语言(hdl:hardware description language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 verilog hdl和vhdl是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由gateway design automation公司(该公司于1989年被cadence公司收购)开发。两种hdl均为ieee标准。
verilog特点
1.能够在不同的抽象层次上,如系统级、行为级、rtl(register transfer level)级、 门级和开关级,对设计系统进行精确而简练的描述;
2.能够在每个抽象层次的描述上对设计进行仿真验证,及时发现可能存在的设计错误, 缩短设计周期,并保证整个设计过程的正确性;
3.由于代码描述与具体工艺实现无关,便于设计标准化,提高设计的可重用性。如果 有c语言的编程经验,只需很短的时间内就能学会和掌握verilog hdl,因此,verilog hdl可以作为学习hdl设计方法的入门和基础。
verilog用途
verilog hdl就是在用途最广泛的c语言的基础上发展起来的一种硬件描述语言,它是由gda(gateway design automation)公司的philmoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年moorby推出它的第三个商用仿真器verilog-xl,获得了巨大的成功,从而使得verilog hdl迅速得到推广应用。1989年cadence公司收购了gda公司,使得veriloghdl成为了该公司的独家专利。1990年cadence公司公开发表了verilog hdl,并成立lvi组织以促进verilog hdl成为ieee标准,即ieee standard 1364-1995.
verilog实现74ls194芯片
[plain] view plain copymodule reg_74ls194 (
input wire cr_n,
input wire cp,
input wire s0,s1,
input wire dsl,dsr,
input wire d0,d1,d2,d3,
output wire q0,q1,q2,q3
);
reg [0:3] q_reg=4‘b0000;
wire [1:0] s_reg;
assign s_reg={s1,s0};
always @(posedge cp or posedge cr_n) begin
if (!cr_n) begin
q_reg《=4’b0000;
end else begin
case (s_reg)
2‘b00 :q_reg《=q_reg;
2’b01 :q_reg《={dsr,q_reg[0:2]};
2‘b10 :q_reg《={q_reg[1:3],dsl};
2’b11 :q_reg《={d0,d1,d2,d3};
default:q_reg《=4‘b0000;
endcase
end
end
assign q0=q_reg[0];
assign q1=q_reg[1];
assign q2=q_reg[2];
assign q3=q_reg[3];
endmodule
[plain] view plain copymodule reg_74ls194_tb ();
reg clk;
wire cr_n;
reg[1:0] s;
reg dsl,dsr;
wire[3:0] d;
wire[3:0] q;
wire [4:0] duty=2;
wire [4:0] period=7;
wire [4:0] duty1=3;
wire [4:0] period1=4;
reg [4:0] count=0;
reg [4:0] count1=0;
reg_74ls194 ut(.cr_n(cr_n),
.cp(clk),
.s0(s[0]),
.s1(s[1]),
.dsl(dsl),
.dsr(dsr),
.d0(d[0]),
.d1(d[1]),
.d2(d[2]),
.d3(d[3]),
.q0(q[0]),
.q1(q[1]),
.q2(q[2]),
.q3(q[3])
);
always @(posedge clk) begin
if (count==period-1) begin
count《=0;
end else begin
count《=count+1;
end
end
always @(posedge clk) begin
if (count《duty) begin
dsl《=1’b0;
dsr《=1‘b1;
end else begin
dsl《=1’b1;
dsr《=1‘b0;
end
end
always @(posedge clk) begin
if (count1==period1-1) begin
count1《=0;
end else begin
count1《=count1+1;
end
end
always @(posedge clk) begin
if (count1《duty1) begin
s[0]《=1’b0;
s[1]《=1‘b1;
end else begin
s[1]《=1’b0;
s[0]《=1‘b1;
end
end
initial begin
clk=1’b0;
forever #50 clk=~clk;
end
assign d=4‘b1111;
initial begin
#2000 $stop;
end
endmodule
设备快线客户端软件V1.0用户手册
大联大诠鼎集团力推Richtek汽车电子标准认证解决方案
Sematech在157纳米光刻技术的发展
贴片电阻规格、封装、尺寸
老年代步车乱象频发需整改治理
Verilog实现74LS194芯片设计程序
两分钟了解 坚果Pro2和坚果3超详细对比
TCL推出新品V6电视,更加注重人机交互
“液晶之父”夏普跌落 追求技术地位太过自我
如何利用微电网解决方案有效推动分布式新能源就地开发利用
中国电信:柯瑞文代任董事长、CEO,最终人选或19日揭晓
关于光学自动化检测设备的应用说明
医疗卫生行业中BIS-6550的应用
PCB生产工艺 | 第十道主流程之表面处理
汽车电机控制器的组成介绍
自动电子门铃开关电路
NI推出用于NI PXI模块化仪器的InstrumentStudio软件
用于自动驾驶感知开发的仿真方案
安富莱C语言编码规范
美方否决中企并购爱思强 德国方面将对收购案继续审查