《Verilog HDL 数字集成电路设计原理与应用》上机作业
班级:******* 学号:******* 姓名:*******
题目1:数字集成电路的verilog HDL 描述与仿真。 要求:(1)学习使用Modelsim 设计和仿真软件; (2)练习教材7.2.1中的例子;
(3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程;
(5)掌握Modelsim 软件的波形验证方式。
解答:
题目2: 简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码
A B
解答:
(1)begin-end语句块和fork-join语句块的区别:
1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行;
2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间;
3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间;
4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join 语句块为执行时间最长的那条语句执行结束的时间;
5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。
(2)程序代码:
Begin-end语句:
module initial_tb1;
reg A,B;
initial
begin
A=0;B=1;
#10 A=1;B=0;
#10 B=1;
#10 A=0;
#10 B=0;
#10 A=1;B=1;
end
endmodule
Frk-join语句:
module wave_tb2;
reg A,B;
parameter T=10;
initial
fork
A=0;B=1;
#T A=1;B=0;
#(2*T) B=1;
#(3*T) A=0;
#(4*T) B=0;
#(5*T) A=1;B=1;
join
endmodule
题目3. 分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。
解答:
(1)阻塞赋值语句
module block2(din,clk,out0,out1,out2,out3);
input din,clk;
output out0,out1,out2,out3;
reg out0,out1,out2,out3;
always@(posedge clk)
begin
out0=din;
out1=out0;
out2=out1;
out3=out2;
end
endmodule
(2)非阻塞赋值语句
module non_block1 (din,clk,out0,out1,out2,out3);
input din,clk;
output out0,out1,out2,out3;
reg out0,out1,out2,out3;
always@(posedge clk)
begin
out0<=din;
out1<=out0;
out2<=out1;
out3<=out2;
end
endmodule
题目4:设计16位同步计数器
要求:(1)分析16位同步计数器结构和电路特点;
(2)用硬件描述语言进行设计;
(3)编写测试仿真并进行仿真。
解答:
(1)电路特点:同步计数器的时间信号是同步的;每当到达最高计数后就会重新计数。(2)程序代码:
module comp_16 (count, clk, rst );
output [15:0] count;
input clk,rst;
reg [15:0] count;
always @ (posedge clk)
if (rst) count<=16'b0000000000000000;
else
if (count==16'b1111111111111111)
count<=16'b0000000000000000;
else
count<=count+1;
endmodule
(3)仿真代码:
module comp_16_tb;
wire [15:0] count;
reg clk,rst;
comp_16 U1 (count, clk, rst );
always #1 clk=~clk;
initial
begin
clk=0;rst=0;
#1 rst=1;
#10 rst=0;
#10 rst=1;
#10 rst=0;
#99999 $finish;
end
endmodule
题目5. 试用Verilog HDL 门级描述方式描述如下图所示的电路。
解答:
module zy(D0,D1,D2,D3,S1,S2,T0,T1,T2,T3,Z); output Z;
input D0,D1,D2,D3,S1,S2; wire T0,T1,T2,T3,wire1,wire2; not U1(wire1,S1), U2(wire2,S2);
and U3(T0,D0,wire2,wire1), U4(T1,D1,S1,wire1), U5(T2,D2,S1,wire2), U6(T3,D3,S1,S2); or U7(Z,T0,T1,T2,T3,); endmodule
题目6. 试用查找真值表的方式实现真值表中的加法器,写出Verilog HDL 代码:
Z
解答:
module homework6(SUM,COUT,A,B,CIN);
output SUM,COUT;
input A,B,CIN;
reg SUM,COUT;
always@(A or B or CIN)
case({A,B,CIN})
3'b000:SUM<=0;
3'b000:COUT<=0;
3'b001:SUM<=1;
3'b001:COUT<=0;
3'b010:SUM<=1;
3'b010:COUT<=0;
3'b011:SUM<=0;
3'b011:COUT<=1;
3'b100:SUM<=1;
3'b100:COUT<=0;
3'b101:SUM<=0;
3'b101:COUT<=1;
3'b110:SUM<=0;
3'b110:COUT<=1;
3'b111:SUM<=1;
3'b111: COUT<=1;
endcase
endmodule
题目7:设计16位同步加法器和乘法器
要求:(1)分析16位同步加法器和乘法器结构和电路特点;(2)用硬件描述语言进行设计;
(3)编写测试仿真并进行仿真。
解答:
(1)16位同步加法器和乘法器结构和电路特点:加法器的进位只用考虑一位,但是乘法器的进位要考虑到32位才行。
(2)程序代码:
16位同步加法器:
module adder(a,b,c,sum,cout);
output [15:0]sum;
output cout;
input [15:0]a,b;
input c;
assign {cout,sum}=a+b+c;
endmodule
16位同步乘法器:
module multiplier(a,b,mul);
input [15:0]a,b;
output [31:0]mul;
assign mul=a*b;
endmodule
(3)仿真代码:
16位同步加法器:
module adder_tb;
reg [15:0]a,b;
reg c;
wire [15:0]sum;
wire cout;
initial
begin
a=8;b=8;c=1;
end
initial
begin
#10 a=16'b1111111111111111;#10 b=1;
end
adder U2(.a (a),.b (b),.c(c),.cout(cout),.sum(sum));
endmodule
16位同步乘法器:
module multiplier_tb;
reg [15:0]a,b;
wire [31:0]mul;
initial
begin
a=3;b=8;
end
initial
begin
#10 a=100;
#15 b=100;
end
multiplier U1(.a(a),.b(b),.mul(mul));
endmodule
仿真截图:
加法器:
乘法器:
题目8. 将下面的状态转移图用Verilog HDL描述。在图中,状态机的输入只与状态的跳转有关,与状态机的输出无关,因此该状态机为摩尔型状态机。下面为三段式描述方式。
解答:
程序代码:
module homework8(clk,out,step,clr);
output [2:0]out;
input step,clk,clr;
reg [2:0]out;
reg [1:0]state,next_state;
always @(posedge clk)
state<=next_state;
always @(state or clr)
if(clr)
next_state<=0;
else
case(state)
2'b00:
case(step)
1'b0:begin next_state<=2'b00;out<=3'b001;end
1'b1:begin next_state<=2'b01;out<=3'b001;end
endcase
2'b01:
begin
out<=3'b010;
next_state<=2'b10;
end
2'b10:
case(step)
1'b0:begin next_state<=2'b00;out<=3'b100;end
1'b1:begin next_state<=2'b11;out<=3'b100;end
endcase
2'b11:
case(step)
1'b0:begin next_state<=2'b11;out<=3'b111;end
1'b1:begin next_state<=2'b00;out<=3'b111;end
endcase
endcase
endmodule
仿真代码:
module homework8_tb;
reg clk,step,clr;
wire [3:0]out;
always
#5 clk=~clk;
initial
begin clk=0;
clr=1;
step=1;
end
initial
begin
#5clr=0;
#10 step=0;
#10step=1;
end
homework8 U1(clk,out,step,clr);
endmodule
仿真截图:
题目9. 如下图所示电路,若其延迟时间设定如表所示,试写Verilog HDL程序设计该电路。
s
y
解答:
程序代码:
module a(a,s,b,y,s0);
input a,b,s,s0;
output y;
assign y=(s&&b)||(s0&&a);
specify
(a=>y)=(10,12,14);
(b=>y)=(10,12,14);
(s=>y)=(11,13,15);
(s0=>y)=(11,13,15);
endspecify
endmodule
module b(a,s,b,y);
input s,a,s,b;
output y;
wire s0;
not #(4)U1(s0,s);
delay_door U2(a,s,b,y,s0);
endmodule
题目10.设计一个8位数字显示的简易频率计。要求:
①能够测试10Hz~10MHz方波信号;
②电路输入的基准时钟为1Hz,要求测量值以8421BCD码形式输出;
③系统有复位键;
④采用分层次分模块的方法,用Verilog HDL进行设计。
解答:
程序代码:
module x;
reg standard_clk;
reg test_clk;
wire [7:0]out;
reg reset;
initial begin reset=0; test_clk=0; standard_clk=0; end
initial #15 reset=1;
always #1 test_clk=~test_clk;
always #10 standard_clk=~standard_clk;
a U1(.reset(reset),.test_clk(test_clk),.standard_clk(standard_clk),.ratio_final(out)); endmodule
module a(reset,test_clk,standard_clk,ratio_final);
input reset,test_clk,standard_clk;
output [7:0]ratio_final;
wire mul_clk;
wire reset_comp;
wire [7:0]ratio_start;
and U0(reset_comp,reset,standard_clk);
t U1(.ain(test_clk),.din(standard_clk),.mul(mul_clk));
w U2(.clk(mul_clk),.count(ratio_start),.reset(reset_comp));
c U3(.ratio_start(ratio_start),.ratio_final(ratio_final));
endmodule
module w(clk,count,reset);
input clk,reset;
output count;
parameter bit=8;
reg [bit-1:0]count;
always @(posedge clk or negedge reset)
if(!reset)
count<=8'b00000000;
else
count<=count+1;
endmodule
module t(ain,din,mul);
parameter width=1;
input [width-1:0]ain,din;
output [width*2-1:0]mul;
assign mul=ain*din;
endmodule
module c(ratio_start,ratio_final);
input [7:0]ratio_start;
output [7:0]ratio_final;
assign ratio_final=2*ratio_start;
endmodule
题目11. 用Verilog HDL设计一个4位LED显示器的动态扫描译码电路。要求:
①4个七段显示器共用一个译码驱动电路;
②显示的数码管清晰明亮,无闪烁现象发生。
解答:
module a(out,in);
output out;
input in;
reg[6:0]out;
wire[3:0]in;
always@(in)
begin
case(in)
4'd0:out=7'b1111110;
4'd1:out=7'b0110000;
4'd2:out=7'b1101101;
4'd3:out=7'b1111001;
4'd4:out=7'b0110011;
4'd5:out=7'b1011011;
4'd6:out=7'b1011111;
4'd7:out=7'b1110000;
4'd8:out=7'b1111111;
4'd9:out=7'b1111011;
endcase
end
endmodule
module w(in1,in2,in3,in4,out1,out2,out3,out4);
output out1,out2,out3,out4;
input in1,in2,in3,in4;
wire [3:0]in1,in2,in3,in4;
wire[6:0]out1,out2,out3,out4;
a U1(.in(in1),.out(out1));
a U2(.in(in2),.out(out2));
a U3(.in(in3),.out(out3));
a U4(.in(in4),.out(out4));
endmodule
module c;
reg [3:0]in1,in2,in3,in4;
wire[6:0]out1,out2,out3,out4;
initial
begin
in1=4'b0010;
in2=4'b0100;
in3=4'b1000;
in4=4'b0000;
end
initial
begin
#5 in4=4'b0111;
in3=4'b0110;
in2=4'b0100;
in1=4'b0000;
end
w U1(in1,in2,in3,in4,out1,out2,out3,out4); endmodule
《硬件描述语言》上机作业西电微电子 \
第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。 A[0] Array B[0] A[1] B[1] A[2] B[2] 结构描述: 电路设计: module hw1(A,B,Y); input[2:0] A,B; output Y; wire w1,w2,w3; xor U1(w1,A[0],B[0]); xor U2(w2,A[1],B[1]); xor U3(w3,A[2],B[2]); nor U4(Y,w1,w2,w3); endmodule 仿真测试: module test_hw1; reg[2:0] A,B; wire Y; hw1 U1(A,B,Y); initial begin A=3'b000;B=3'b000; #50 A=3'b000;B=3'b000; #50 A=3'b111;B=3'b111; #50 A=3'b000;B=3'b110;
#50 A=3'b111;B=3'b000; #50 A=3'b110;B=3'b110; #50 A=3'b011;B=3'b010; #50 A=3'b001;B=3'b011; #50 A=3'b111;B=3'b010; #50 $stop; end initial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule 行为描述: 电路设计: module hw2(A,B,Y); input[2:0] A,B; output Y; wire Y; assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule 仿真测试:
1.(该题目硕士统招生做)请用框架法和语义网络法表示下列事件。(10分) 2015年2月20日上午11点40分,广东省深圳市光明新区柳溪工业园附近发生山体滑坡,经初步核查,此次滑坡事故共造成22栋厂房被掩埋,涉及公司15家,截至目前已安全撤离900人,仍有22人失联。 答:框架表示法(5分):(给分要点:确定框架名和框架槽,根据报道给出的相关数据填充,主要内容正确即可给分,不必与参考答案完全一致) <山体滑坡> 时间:2015年2月20日上午11点40分 地点:广东省深圳市光明新区柳溪工业园附近 掩埋厂房:22栋 涉及公司数目:15家 安全撤离人数:900人 失联人数:22人 语义网络表示法(5分):(给分要点:确定语义网络的节点及其连接关系,根据报道内容进行填充,主要内容正确即可给分,不必与参考答案完全一致) 1. (该题目全日制专业学位硕士做)请用一种合适的知识表示方法来表示下面知识。(10分) How Old Are YOU是微软推出的一款测年龄应用,该应用架设在微软服务平台Azure上,该平台具有机器学习的开发接口,第三方开发者可以利用相关的接口和技术,分析人脸照片。
(给分要点:采用合适的知识表示方法,正确即可给分,不必与参考答案完全一致) 答:
组合逻辑电路实验(一)实验报告 一.实验名称:3-8译码器设计 二.实验目的 1.掌握ISE 开发工具的使用,掌握FPGA 开发的基本步骤; 2.掌握组合逻辑电路设计的一般方法; 3.掌握程序下载方法,了解UCF 文件的格式; 4.初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和LED 显示灯的使用方法。 三.实验内容 1.用VHDL 实现3-8译码器模块 译码器电路如图2-1所示。其功能如表2-1所示。试用VHDL 实现该译码器,并在开发板上进行检验。 表2-1 译码器功能表 EN A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 3-8 译码器 A B C EN Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 图2-1 3-8译码器
0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 2.将程序下载到FPGA并进行检验 (1)资源使用要求:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。 (2)检验方法:当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等。 四.实验步骤 1.启动ISE,新建工程文件,编写3-8译码器的VHDL模块; 2.新建UCF文件,输入位置约束; 3.完成综合、实现,生成下载文件; 4.连接开发板USB下载线,开启开发板电源; 5.下载到FPGA; 6.拨动开关,验证结果是否正确。 五.主要vhdl代码 architecture Behavioral of coder_38 is --3-8译码器行为级描述signal x:STD_LOGIC_VECTOR (2 downto 0); begin x <= A&B&C;
《Verilog HDL 数字集成电路设计原理与应用》上机作业 班级:******* 学号:******* 姓名:******* 题目1:数字集成电路的verilog HDL 描述与仿真。 要求:(1)学习使用Modelsim 设计和仿真软件; (2)练习教材7.2.1中的例子; (3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; (5)掌握Modelsim 软件的波形验证方式。 解答: 题目2: 简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码 A B
解答: (1)begin-end语句块和fork-join语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Begin-end语句: module initial_tb1; reg A,B; initial begin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end endmodule Frk-join语句: module wave_tb2; reg A,B; parameter T=10; initial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; join endmodule
西安电子科技大学本科课程考试试卷2008—2009学年第一学期《单片机原理与接口技术》 课程A卷 专业年级:07电信命题教师:郭文川审题教师: 考生班级:学号:考生姓名: 一、填空题:(每空1分,共20分) 1、MCS—5l单片机的最大程序寻址空间是64 KB,该空间的地址范围从0000H 至0FFFFH,系统上电及复位后,程序入口地址为0000H。 2、若由程序设定PSW中的RS1、RS0=01,则工作寄存器R0~R7的直接地址为08H~0FH。 3、MCS-51单片机的I/O端口采用统一编址方式。、 4、一个8位D/A转换器其分辨率为_ 1/256 ,若该8位D/A转换器的基准电压为5V, 则数字量100对应得模拟量为 1.953V(5*100/256V)。 5、单片机系统中经常采用的地址译码技术包括线选法和译码法。 6、INTEL 8051 CPU 是8 位的单片机,其内部有4 KB的ROM。 7、指出下列各指令中源操作数的寻址方式。 (1)MOVC A,@A+DPTR (变址寻址) (2)XCH A,@R0;(寄存器间接寻址) (3)MOV C,P1.0 (位直接寻址) (4)JC LOOP (相对寻址) 8、判断下列各条指令的书写格式是否有错,并指出原因。 (1)MUL R0,R1 (错,乘法指令用A×B ) (2)MOV A, @R7 (错,@R7非法)
(3)MOV A, #3000H (错,累加器A为8位存储器) (4)MOV R1, C (错,C为进位位不能送给寄存器R1) 二、选择题:(每题1分,共10分) 1.当MCS-51单片机接有外部存储器时,P2口可作为 D 。 A.数据输入口 B. 数据的输出口 C.准双向输入/输出口D.高8位地址线 2.单片机的并行接口中,作为数据线使用的并行口是 A 。 A.P0 B. P1 C. P2 D. P3 3.MCS—5l单片机的堆栈区是设置在 C 中。 A.片内ROM区B.片外ROM区 C.片内RAM区 D. 片外RAM区 4.片内RAM的20H~2FH为位寻址区,所包含的位地址是。 A.00H~20H B. 00H~7FH C.20H~2FH D.00H~FFH 5.在寄存器间接寻址方式中,间址寄存器中存放的数据是。 A.参与操作的数据B.操作数的地址值 C.程序的转换地址D.指令的操作码 6.当需要从MCS-51单片机程序存储器取数据时,采用的指令为。 A. MOV A, @R1 B.MOVC A, @A + DPTR C. MOVX A, @ R0 D.MOVX A, @ DPTR 7. 能够用紫外光擦除ROM中程序的只读存储器称为。 A.掩膜ROM B.PROM C.EPROM D.EEPROM 8. 在片外扩展一片2716程序存储器芯片要地址线。 A.8根 B.13根 C.11根 D.20根 9. 定时器/计数器工作方式1是。 A. 8位计数器结构 B. 2个8位计数器结构 C. 13位计数结构 D. 16位计数结构 10.T0中断的中断入口地址为。 A. 0003H B. 000BH C. 0013H D. 001BH 三、分析程序,写出结果(每空3分,共18分) 1、已知(A)=83H,(R0)=17H,(17H)=34H,执行下列程序段后(A)= 0CBH 。
硬件描述语言及器件实验指导书 电子科学与技术专业组
第1章实验一用硬件描述语言的方法设计一个三输入与门电 路 一、实验目的 1、掌握MAX+plusII的使用方法。 2、掌握VHDL语言程序的基本结构。 2、掌握使用硬件描述语言设计数字电路的方法和步骤。 3、掌握用硬件描述语言设计三输入与门电路的方法。 二、实验器材 1.台式计算机1台。 2.可编程逻辑逻辑器件实验软件1套。 3.下载电缆一套。 4.示波器一台。 三、实验说明 1.台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。 2.可编程逻辑逻辑器件实验软件向原理图的设计提供平台,并将调试好的原理图下载到可编程逻辑逻辑器件中。 3.下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。 4.示波器用于观察可编程逻辑器件执行程序时输出信号的变化。 四、实验内容与要求 用硬件描述语言的方法设计一个三输入与门电路,要求: (1)根据三输入与门的逻辑表达式,在构造体中直接使用并行赋值语句实现,并进行仿真;
(2)根据三输入与门的真值表,在构造体中使用进程语句实现,并进行仿真; 五、实验步骤(下面七个的实验的软件的使用具体步骤跟本次试验一样不再详述) 1.打开新建菜单选择“textedtiorfile”,这个文件是写程序编程用的。 2.程序写完后点“保存”,注意(1)保存的格式是.vhd,(2)保存的地址不能是桌面和硬盘的根目录,否则在后面的编程将出现错误。
3.在file→projectset→projecttocurrentfile,这步是将文件设置在工程里,能够正常编译和下载。
课程名称:FPGA与硬件描述语言 课程编码:7002301 课程学分:2学分 课程学时:32学时 适应专业:电子信息工程、电子信息工程(理工科实验班) 《FPGA与硬件描述语言》 FPGA and Hardware Describing Language 教学大纲 一、课程性质与任务 性质:本课程的授课对象为电子信息工程专业二年级本科生,课程属性为专业基础必修课,该课程讲授FPGA基本原理及结构,先进的硬件描述语言(VHDL语言),FPGA设计与应用等知识。 任务:通过对(VHDL)硬件描述语言,FPGA设计等知识的学习,掌握硬件描述语言,FPGA设计的基本知识。培养学生动手能力以及解决实际问题的能力。理解VHDL语言,学会FPGA设计方法等。 二、课程教学基本内容及要求 第一章绪论VHDL的数据和表达式 (一)教学基本要求: 掌握:VHDL程序的特点,VHDL的数据,VHDL的表达式。 了解:FPGA基本原理及结构。 (二)教学基本内容: 绪论:FPGA基本原理及结构 第一章VHDL的数据和表达式 1.1 VHDL程序的特点 1.2 VHDL程序的基本结构 1.3 VHDL的数据 1.4 VHDL的表达式 第二章VHDL的顺序描述语句 (一)教学基本要求: 掌握:信号赋值语句和变量赋值语句,if语句,case语句,null语句。 理解:loop语句。 (二)教学基本内容:
第二章VHDL的顺序描述语句 2.1信号赋值语句和变量赋值语句 2.2 if语句 2.3 case语句 2.4 loop语句 2.5 null语句 第三章VHDL的并行描述语句 (一)教学基本要求: 掌握:进程语句,并发信号赋值语句,元件例化语句。 理解:条件信号赋值语句,选择信号赋值语句。 了解:生成语句。 (二)教学基本内容: 第三章VHDL的并行描述语句 3.1进程语句 3.2并发信号赋值语句 3.3条件信号赋值语句 3.4选择信号赋值语句 3.5元件例化语句 3.6生成语句 第四章VHDL的时钟信号描述方法 (一)教学基本要求: 掌握:时钟的VHDL描述方法,时序电路中复位信号的VHDL描述方法。(二)教学基本内容: 第四章VHDL的时钟信号描述方法 4.1时钟信号的VHDL描述方法 4.2时序电路中复位信号的VHDL描述方法 第五章VHDL的有限状态机的设计 (一)教学基本要求: 掌握:有限状态机的基本概念及应用。 理解:一个Moore型有限状态机的设计实例 (二)教学基本内容: 第五章VHDL的有限状态机的设计 5.1 有限状态机的基本概念 5.2一个Moore型有限状态机的设计实例
西安电子科技大学试卷 考试时间120 分钟试卷编号参考答案 班级学号姓名任课老师姓名 请按下述要求正确答题: 1. 在试卷指定位置上正确写入你的班级、学号、姓名和任课老师姓名。 2.全部试卷共 11 页。试卷必须交回,否则以零分计。 3.试题解答必须写在试卷上,若试卷上写不下可以写在试卷的背面,写在草稿纸上的解答一律无效。 4.本试卷的试题共有五道大题,需要全部解答。 5.解答前务必阅读清楚题意,及解答要求,否则导致不能正确评分概由自己负责。 一、单项选择题(每小题1分,共10分) 1.访管指令所引起的中断属于( C )中断。 A.外中断B.I/O中断C.软中断D.程序中断2.资源静态分配法破坏了死锁产生的(B)条件来预防死锁的发生。 A.互斥控制B.保持和等待 C.不可剥夺控制D.循环等待 3.虚拟存储的基础是程序局部性理论,它的基本含义是( B )。 A.代码的顺序执行B.程序执行时对内存访问的不均匀性 C.变量的连续访问D.指令的局部性 4.关于SPOOLING系统(D)的描述是错误的。 A.不需要独占设备 B.加快了作业执行的速度 C.使独占设备变成了共享设备
D.利用了处理器与通道并行工作的能力 5.设系统中有m个同类资源数,n为系统中的并发进程数,当n个进程共享m个互斥资源时,每个进程的最大需求数是w,试问下列情况下系统会死锁的是(D)。 A.m=4,n=3,w=2 B.m=2,n=2,w=1 C.m=5,n=2,w=3 D.m=4,n=3,w=3 6.文件系统中实现按名存取的功能是通过查找(B)来实现的。 A.磁盘空间B.文件目录C.磁盘控制器D.位示图7.下面的叙述中,(D)不是设备管理中引入缓冲机制的主要原因。 A.缓和CPU和I/O设备间的速度不匹配问题 B.减少对CPU的中断频率和放宽对CPU响应时间的限制 C.提高CPU和I/O设备间的并行性 D.节省系统内存 8.下列操作系统强调交互性的系统是(B)。 A.批处理系统B.分时系统C.实时系统D.网络操作系统 9.响应比高者优先作业调度算法是通过计算时间和(D)来实现的。 A.输入时间B.完成时间C.周转时间D.等待时间10.在可变分区管理方案中,若采用“最佳适应”分配算法,通常将空闲区按(A )排列。 A.容量递增B.容量递减C.地址递增D.地址递减二、填空题(每空格1分,共15分) 1.把作业装入内存时完成地址变换的方式称静态地址再定位,而在作业执行期间(访问到指令或数据)才进行地址变换的方式称为动态地址再定位。 2.死锁产生的四个必要条件是互斥执行、保持和等待、不可剥夺和循环等待。
《硬件描述语言与FPGA技术》 实验指导书 西北工业大学 2012/10/10
目录 实验一简单的组合逻辑设计 (3) 实验二简单分频时序逻辑电路的设计 (6) 实验三利用条件语句实现计数分频时序电路 (9) 实验四阻塞赋值与非阻塞赋值的区别 (12) 实验五用always块实现较复杂的组合逻辑电路 (16) 实验六在Verilog中使用函数 (20) 实验七在Verilog HDL中使用任务(task) (23) 实验八利用有限状态机进行时序逻辑的设计 (27) 实验九利用状态机实现比较复杂的接口设计 (32) 练习十利用SRAM设计一个FIFO (39)
实验一简单的组合逻辑设计 一、实验目的 1. 学习Quartus和ModSim两种EDA工具的使用方法; 2.掌握基本组合逻辑电路的实现方法; 3.初步了解两种基本组合逻辑电路的生成方法; 4.学习测试模块的编写; 5.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验内容 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 三、实验仪器、设备 预装了开发工具ModelSimSE、synplify的PC机。 四、实验原理 1.组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合而与 电路以前状态无关,而与其他时间的状态无关。其逻辑函数如下: Li=f(A1,A2,A3……An) (i=1,2,3…m) 其中,A1~An为输入变量,Li为输出变量。 2.组合逻辑电路的特点归纳如下: ① 输入、输出之间没有返馈延迟通道; ② 电路中无记忆单元。 3.组合逻辑设计示例:可综合的数据比较器。它的功能是比较数据a与数据b,如果 两个数据相同,则给出结果1,否则给出结果0。描述组合逻辑时常使用assign 结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格 式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b);
西安电子科技大学 可编程逻辑器件原理、应用与实验课程实验报告实验名称实验一 ---- 实验五 电子工程学院学院 162班Array姓名陈圆圆学号1602121053 同作者 实验日期 2017 年 4 月8日
2、建立verilog源文件jishuqi。 3、综合,编译。 4、进行管脚分配,在此实验中,采用按键19开关为加、减法的选择,拨码开关55为是否有进位及借位,LED46为进位的显示,LED39、40、43、44分别为输出结果的显示。 5、程序的烧写。 四、在Diamond主界面中,进入Tools->Programmer,点击OK键,然后点击图标 ,在State栏出现PASS,即说明烧写成功。 四、实验数据记录(或仿真及软件设计) module jishuqi (cbin,sum,cout,sel); //cbin表示进位或借位,sel表示选择加减法 input cbin;//定义进位或借位 input sel; output sum,cout; reg [3:0] sum;//寄存器长度设置 reg cout; parameter a = 4'b1010, b = 4'b0110;//计算参量的设置 always@(sel) begin if(sel) //sel为1进行加法运算,否则进行减法运算 {cout,sum}=a + b + cbin; else {cout,sum}=a - b - cbin;//减法器 end endmodule 五、实验结果分析及回答问题(或测试环境及测试结果) 加、减法的验证: 当不按按键19时,二极管37、44亮,39、40、43灭,即显示数字为01110验证为加法运算,结果正确。当按下按键19时,二极管37、39、43、44亮,40灭,
关于硬件描述语言【VHDL和Verilog】 随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 究竟选择VHDL还是verilog HDL? 这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看人的使用习惯。如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。 学习HDL的几点重要提示 1.了解HDL的可综合性问题: HDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(即程序的功能可以用硬件电路实现)。不可综合的HDL语句在软件综合时将被忽略或者报错。应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。” 2. 用硬件电路设计思想来编写HDL: 学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要多实践,多思考,多总结。 3.语法掌握贵在精,不在多: 30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,
VerilogHDL硬件描述语言复习 一、 1. Verilog HDL 是在哪一年首次被I E E E标准化的? 2. Verilog HDL支持哪三种基本描述方式? 3. Verilog HDL 是由哪个公司最先开发的? 4. Verilog HDL中的两类主要数据类型什么? 5. U D P代表什么? 6. 写出两个开关级基本门的名称。 7. 写出两个基本逻辑门的名称。 8. 在数据流描述方式中使用什么语句描述一个设计? 9. 采用结构描述方式描述1位全加器。 10. i n i t i a l语句与always 语句的关键区别是什么? 11. 采用数据流方式描述2 - 4译码器。 1 2. 找出下面连续赋值语句的错误。 assign Reset=#2 Sel^WriteBus; 二、 1. 下列标识符哪些合法,哪些非法? C O u n T, 1_2 M a n y, \**1, R e a l?, \wait, Initial 2. 在Verilog HDL中是否有布尔类型? 3. 如果线网类型变量说明后未赋值,其缺省值为多少?
4. Verilog HDL 允许没有显式说明的线网类型。如果是这样,怎样决定线网类型? 5. 下面的说明错在哪里? i n t e g e r [0:3] R i p p l e; 6. Verilog HDL有哪几大类数据类型? 7.Verilog HDL有哪几种寄存器类型? 三、 1. 假定长度为6 4个字的存储器, 每个字8位,编写Verilog 代码,按逆序交换存储器的内容。即 将第0个字与第6 3个字交换,第1个字与第6 2个字交换,依此类推。 2. 假定3 2位总线A d d re s s _ B u s, 编写一个表达式,计算从第11位到第2 0位的归约与非。 3. 假定一条总线C o n t ro l _ B u s [ 1 5 : 0 ],编写赋值语句将总线分为两条总线:A b u s [ 0 : 9 ]和B b u s [ 6 : 1 ]。 4. 编写一个表达式,执行算术移位,将Qparity 中包含的8位有符号数算术移位。 5. 使用条件操作符, 编写赋值语句选择N e x t S t a t e 的值。如果C u rre n t S t a t e的值为R E S E T, 那么N e x t S t a t e的值为G O;如果C u rre n t S t a t e的值为G O,则N e x t S t a t e 的值为B U S Y;如果 C u rre n t S t a t e的值为B U S Y;则N e x t S t a t e的值为R E S E T。 6. 如何从标量变量A,B,C和D中产生总线B u s
《Verilog HDL数字集成电路设计原理与应用》上机作业******* 班级:******* 学号:******* 姓名: verilog HDL描述与仿真。题目1:数字集成电路的设计和仿真软件;(1)学习使用Modelsim要求:中的例子;2)练习教材7.2.1 ((3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; Modelsim软件的波形验证方式。(5)掌握 解答: 语句块的区别,并写出下面信号语句块和begin-endfork-join:题目2 简述对应的程序代码AB500ns40201030 解答: (1)begin-end语句块和fork-join语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join 语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作
用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Begin-end语句: module initial_tb1; reg A,B; initial begin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end endmodule Frk-join语句: module wave_tb2; reg A,B; parameter T=10; initial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; join endmodule 3. 分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。题目out2out1out0 dinout3QQDDQQD clk 解答:)阻塞赋值语句(1module block2(din,clk,out0,out1,out2,out3);input din,clk; output out0,out1,out2,out3;reg out0,out1,out2,out3;always@(posedge clk)begin out0=din; out1=out0; out2=out1; out3=out2;
西安电子科技大学微机原理试题 姓名学号总分 一.填空题(每空1分,共30分 115的8位二进制补码为00001111B ,-15的8位二进制补码为11110001B 。2某8位二进制补码为80H,其十进制表示为-128 。 3字符B的ASCII码为42H ,字符0的ASCII码为30H 。 48086CPU总线按功能可分为数据总线,地址总线和控制总线。 58086CPU数据总线包含16 条数据线,最多可寻址的存储器容量为1MB 。 6CPU内部用于计算的部分为C ,用于保存下一条要执行的指令地址的为B 。 A 程序状态字 B 程序计数器 C ALU D 工作寄存器 7经常用作循环次数的寄存器是C ,用于I/O端口寻址的寄存器是D 。 A AX B BX C CX D DX 8指令MOV CX, 1000的结果是CH= 03H 。 9将0D787H和4321H相加后,标志位CF= 1 ,SF= 0 ,ZF= 0 , OF= 0 ,AF= 0 ,PF= 0 。 10寄存器SI中能够表示的最大有符号数为32767 ,最小有符号数为-32768 。
11设(DS=4000H,(BX=0100H,(DI=0002H,(4002=0A0AH,(40100=1234H,(40102 =5678H,求以下指令分别执行后AX寄存器的值。 MOV AX , [2] (AX= 0A0AH 。 MOV AX , [BX] (AX= 1234H 。 MOV AX , [BX][DI] (AX= 5678H 。 MOV AX , 1[BX] (AX= 7812H 。 12用一条指令将AX寄存器低四位清零,其余位不变:。 13用一条指令将AX寄存器高四位取反,其余位不变:。 14用一条指令将AX高8位与低8位交换:。 15用一条指令将AL中的大写字母变成相应的小写:。 二.判断题(每题1分,共10分 以下语句是语法正确的打√,语法错误打×,其中TABLE和TAB为两个字节类型的变量。 1MOV DS , 1000H × 2MOV DS , TABLE √ 3MOV [1200H] , [1300H] × 4ADD AX , BX , CX × 5XCHG AL , CL √ 6CALL AL ×
硬件描述语言HDL的现状与发展 摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内EDA基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。 关键词:ASIC 硬件描述语言HDL Verilog HDL VHDL SystemC Superlog 芯片系统SoC 引言 硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。 硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE 标准。 现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前HDL发展状况 目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。 而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。 在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2
《硬件描述语言》实验报告 学院: 学号: 姓名: 专业: 实验时间: 实验地点: 指导教师: 年月
实验一简单组合逻辑设计 一、实验目的及要求: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤 1.实验内容: 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试; (2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。 (4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。 四、实验结果与数据处理: 1.RTL图及仿真后波形图:
2.综合后的电路图: 五、分析与讨论: 1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系? 答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系 2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。
3.比较两种测试方法,哪一种更全面? 答:第二种测试方法更全面,测试了更多种的变换的情况。 实验二简单分频时序逻辑电路的设计 一、实验目的及要求: 1.掌握条件语句在简单时序模块设计中的使用; 2.掌握verilog语句在简单时序模块设计中的使用; 3.学习在Verilog模块中应用计数器; 4.学习测试模块的编写、综合和不同层次的仿真。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤: 1.实验内容: (1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。得到如下波形图: (2)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真; 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。 (2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。得到波形图。 (3)观察综合后生成的文件和源文件的不同点和相同点。
西安电子科技大学长安学院试卷 考试时间 120 分钟 试卷编号 姓名 学号 班级 一、填空题(每小题4分,共40分) 1. 设()f x 的定义域为[ 0,1],则(ln )f x 的定义域为 . 2. 设函数???>+≤=1 ,1 ,)(2x b ax x x x f ,为了使函数在1=x 处连续,则=a ,=b . 3. 设, arctan )1(2x x y +=则='y . 4. )ln 11(lim 1x x x x --→= . 5. =??? ??-++∞→114lim x x x x . 6. 已知?+=C x dx x f arcsin )(,则=-? dx x f x )(12 . 7. =-?1 0 24x dx . 8. 设()f x 是连续函数,则dt t f a x x x a a x ?-→ )(lim = . 9. ?∞ +-== 0 dx e x I x n n . 10. 由0 , 0)( , , =≥===y x f y b x a x 所围曲边梯形绕x 轴旋转而成的旋 转体的体积公式为:V = . 则(应用你给的公式计算)由],[,)(22R R x x R x f y -∈-==与x 轴所围成的图形绕x 轴旋转而成的立体的体积=V .
二、计算下列各题(每小题8分,共48分) 1. 设函数?????≤+>=0 ,0 ,1sin )(2x x a x x x x f ,要使函数)(x f 在),(+∞-∞内连续,应当怎样选择数a ? 2. 设),tan ln(sec x x y +=求dx dy . 3. 计算??→x t x t x dt te dt e 0 2 0 2022)(lim . 4. 计算?dx x arctan . 5. 计算?+dx x x 3122. 6. 计算由 , 1x y =与直线x y =以及2=x 所围成的平面图形的面积. 三、(6分) 求函数x xe x f -=)(在其定义域内的最大值和最小值. 四、(6分) 若函数)(x f 在]1,0[上连续,证明: =? π 0 )(sin dx x xf ? 0 )(sin 2ππdx x f ,并计算dx x x x ?+π 0 2cos 1sin .
西北工业大学 《硬件描述语言》实验报告 实验一简单组合逻辑设计 (2) 实验二简单分频时序逻辑电路的设计 .............................................. 错误!未定义书签。实验三利用条件语句实现技术分频时序电路.................................... 错误!未定义书签。实验四阻塞赋值与非阻塞赋值的区别 .............................................. 错误!未定义书签。实验五用always块实现较复杂的组合逻辑电路 ............................... 错误!未定义书签。实验六在V erilog HDL中使用函数 .................................................. 错误!未定义书签。实验七在V erilog HDL中使用任务 .................................................. 错误!未定义书签。实验八利用有限状态机进行时序逻辑的设计.................................... 错误!未定义书签。 学院:计算机学院 学号: 姓名: 专业:计算机科学与技术 实验时间: 2011.11 实验地点:实验大楼 指导教师: 西北工业大学 2011 年11 月
实验一简单组合逻辑设计 实验日期:实验成绩:指导老师: 一.实验目的: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二.实验设备: 安装Modelsim-6.5c的PC机。 三.实验内容: 描述一个可综合的数据比较器,比较数据a 、b的大小,若相同,则给出 结果1,否则给出结果0 四.实验代码 module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule `timescale 1ns/1ns module t; reg a,b; wire equal; initial begin a=0; b=0;