微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求大神帮忙做个题,谢谢!

求大神帮忙做个题,谢谢!

时间:10-02 整理: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 #1g2(q2,q4,q1)后,仿真结果又跟书上说的一致。这是为啥呢?

后来我单独设计了一个两与非门构成的RS触发器,没加延时单位在代码中,发现仿真结果跟书上说的一致。这又是什么原因呢?


哎,这个问题困扰我茶不思饭不香,很想把它解决,求给位大哥哥帮帮我,谢谢!

仿真归仿真,电路结构还是不同。拿本verilog书籍看看。建议你,还是不要搞什么IC电路。去IT培训一下,或许还有机会步入豪门。

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

网站地图

Top