完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
测试文件
LIBRARY ieee; USE ieee.std_logic_1164.all; ENtiTY ex1_vhd_tst IS END ex1_vhd_tst; ARCHITECTURE ex1_arch OF ex1_vhd_tst IS -- constants -- signals SIGNAL aa : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL clk : STD_LOGIC; SIGNAL clr : STD_LOGIC; SIGNAL cp : STD_LOGIC; SIGNAL data_rst : STD_LOGIC; SIGNAL en : STD_LOGIC; SIGNAL key : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL key_out : STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL load : STD_LOGIC; SIGNAL rst : STD_LOGIC; SIGNAL sequ_out : STD_LOGIC_VECTOR(15 DOWNTO 0); COMPONENT ex1 PORT ( aa : IN STD_LOGIC_VECTOR(15 DOWNTO 0); clk : IN STD_LOGIC; clr : IN STD_LOGIC; cp : IN STD_LOGIC; data_rst : IN STD_LOGIC; en : IN STD_LOGIC; key : IN STD_LOGIC_VECTOR(15 DOWNTO 0); key_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); load : IN STD_LOGIC; rst : IN STD_LOGIC; sequ_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ); END COMPONENT; BEGIN i1 : ex1 PORT MAP ( -- list connections between master ports and signals aa => aa, clk => clk, clr => clr, cp => cp, data_rst => data_rst, en => en, key => key, key_out => key_out, load => load, rst => rst, sequ_out => sequ_out ); init: PROCESS BEGIN clk<='1'; wait for 20ns; clk<='0'; wait for 20ns; END PROCESS init; tb: PROCESS BEGIN aa<="0000000000000000"; key<="0000000000000000"; clr<='1'; load<='0'; rst<='1'; data_rst<='1'; en<='0'; cp<='0'; wait for 40ns; aa<="1111111111000001"; key<="1111000011111110"; clr<='0'; load<='1'; rst<='0'; data_rst<='0'; en<='1'; cp<='1'; WAIT for 500ns; END PROCESS; END ex1_arch; |
|
相关推荐
11个回答
|
|
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --********************************************* ENTITY huancun is PORT( clr,load,cp : IN STD_LOGIC; key : in std_logic_vector(15 downto 0); key_out : buffer std_logic_vector(15 downto 0)--缓冲状态,从处理器送到端口的数据可以等待外设取走 ); END huancun; --********************************************* ARCHITECTURE a OF huancun IS BEGIN --**************************************** process(cp,clr,load) begin if clr='1' then key_out<=(others=>'0'); --复位清零 elsif cp'event and cp='1' then if load='1'then key_out<=key; end if; end if; end process; end a; |
|
|
|
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; --********************************************* ENTITY miyaoxulie is PORT( clk,rst,en : IN STD_LOGIC; aa : in STD_LOGIC_VECTOR(15 DOWNTO 0); key : in STD_LOGIC_VECTOR(15 DOWNTO 0); sequ_out : buffer STD_LOGIC_VECTOR(15 DOWNTO 0); data_rst : IN STD_LOGIC ); END miyaoxulie; --********************************************* ARCHITECTURE a OF miyaoxulie IS begin --**************************************** process(clk,rst,en,data_rst) begin if rst='1' then sequ_out<=(others=>'0'); --复位清零 elsif data_rst='1' then sequ_out<=(others=>'0'); elsif clk'event and clk='1' then if en='1'then sequ_out<=key xor aa; end if; end if; end process; end a; |
|
|
|
上面是两个模块的程序
|
|
|
|
求大神帮助啊aaaaaaaaaaaaaa
|
|
|
|
一般用modelsim仿真是编译的时候把所有模块文件和tb一起编译,然后simulation的时候只选中tb即可,估计楼主是在仿真的时候选了顶层文件而不是tb?
|
|
|
|
juventus_yang 发表于 2015-10-10 21:08 不太明白 。我是用QUARTUS ii直接调用modelsim 而且激励信号都能出来。就是输出信号是UUUUUU红线 |
|
|
|
谢谢分享学习一下
|
|
|
|
可以参考明德扬的视频,我记得有这方面的讲解。
|
|
|
|
遇到同样的问题了,不是怎么解决
|
|
|
|
|
|
|
|
modelsim默认未初始化的值为未知值(即红线),一般出现在sum <= sum + 1'b1 //sum为输出值 而sum <= 0;则不会; modelsim会把第一种情况认为sum未知,而第二中认为初始化。 对与Verilog中输出端口可在被测试文件中用initial begin 。。。end进行初始化,输入端口可在testbench中初始化。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1559 浏览 1 评论
1335 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1544 浏览 0 评论
927 浏览 0 评论
2341 浏览 0 评论
1465 浏览 35 评论
5678 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 09:28 , Processed in 0.705738 second(s), Total 62, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号