微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 求各位大哥哥帮忙做个题,谢谢!

求各位大哥哥帮忙做个题,谢谢!

时间:12-12 整理:3721RD 点击:
二本院校菜鸟一枚,马上大四要找工作了,以前没好好学,现打算努努力。老师没控理我,周围同学就不提了。实在没办法来网上求助,题目很简单,对各位来说也许就是举手之劳的事,对我来说确始终不明白问题出在哪。本人正在开始学习verilog,题目是用verilog写个d触发器,门级描述的那种设计方法。工具用的是盗版的modelsim SE 10.1a
d触发器的门级设计代码如下:
module d_ff(d,
            clk,
            q
            );
          
          
input  d;
input  clk;
output q;
wire q1,q2,q3,q4,q5,q6;
nand g1 (q1,q3,q2);
nand g2 (q2,q4,q1);
nand g3 (q3,q5,clk,q4);
nand g4 (q4,clk,q6);
nand g5 (q5,q3,d);
nand g6 (q6,q5,q4);
assign q = q2;
endmodule
测试代码如下:
`timescale 1ns/1ps
module d_ff_tb();
reg d;
reg clk;
wire q;
always #100 clk = ~clk;
always #30   d  = ~d;
d_ff u1(.d(d),
        .clk(clk),
        .q(q));
initial begin
clk = 0;
d   = 0;
end
endmodule
问题是这样的:设计代码nand g1(q1,q3,q2),nand g2(q2,q4,q1)的仿真结果和理论值不一样。根据书
上的理论g1,g2这两个与非门的连接方式构成RS触发器。当q3=1,q4=1的时候,q1,q2的值应该保持不变才对。但是仿真的结果却是q1,q2翻转了。然后把代码 nand g1(q1,q3,q2)改写成了 nand #1 g1(q1,q3,q2)
,nand g2(q2,q4,q1)改写成了nand #1 g2(q2,q4,q1)后,仿真结果又跟书上说的一致。这是为啥呢?
后来我单独设计了一个两与非门构成的RS触发器,没加延时单位在代码中,发现仿真结果跟书上说的一致。这又是什么原因呢?
哎,这个问题困扰我茶不思饭不香,很想把它解决,求给位大哥哥帮帮我,谢谢!

演员的自我修养。。。。。。

我没仿真啊,我猜的。你先看看你的内部信号(就是每个nand输入和输出)是不是都正确,哪里出了错误。有可能是因为没有延时所以出现了不该出现的状态,因为实际实现上延时就是存在的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top