一、(1)D、触发器真值表
二、(1) 启动QUARTUSⅡ建立一个空白工程
(2) 新建VerilogHDL源程序文件输入程序代码并保存,然后进行综合编译。若在编译过程中发现错误,则找出并更正错误,直到编译成功为止。
module QXJ1(q,qn,d,clk,set,reset);
input d,clk,set,reset;
output reg q,qn;
always @(posedge clk)
begin
if(~reset) begin q<=1'b0;qn<=1'b1;end
else if(~set) begin q<=1'b1;qn<=1'b0;end
else begin q<=d;qn<=~d;end
end
endmodule
(3) 从设计文件创建模块,由QXJ.v生成名为QXJ.bsf的模块符号文件。
(4) 新建图形设计文件命名为QXJ.bdf在空白处双击鼠标左键,在symbol对话框左上脚的libraries中,分别将projet下的QXJ模块放在图形文件QXJ.bdf中,加入输入、输出引脚,双击各引脚符号,进行引脚命名。连接好的原理图
(5) 启动ModelSim仿真软件,编辑仿真软件
`timescale 1ns/1ns
module QXJ1_tp;
reg d,clk,set,reset;
wire q,qn;
parameter dely=100;
QXJ1 u1(q,qn,d,clk,set,reset);
always #(dely/2) clk=~clk;
initial
begin
clk=0;reset=0;set=1;d=0;
#dely reset=1;set=1;d=1;
#dely reset=1;set=1;d=0;
#dely reset=1;set=0;d=1;
#dely reset=0;set=1;d=1;
#dely $finish;
end
initial $monitor($time,,,"clk=%d, reset=%d, set=%d, d=%d, q=%d, qn=%d", clk, reset, set, d, q, qn);
endmodule
module QXJ1(q,qn,d,clk,set,reset);
input d,clk,set,reset;
output reg q,qn;
always @(posedge clk)
begin
if(~reset) begin q<=1'b0;qn<=1'b1;end
else if(~set) begin q<=1'b1;qn<=1'b0;end
else begin q<=d;qn<=~d;end
end
endmodule
(6)仿真波形图
如有错误请指正。