用VHDL代码编写一个选择器,具体用途就不说了,不过波形仿真的时候出现状况
代码如下
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity muxrs is
port(
sel:in std_logic_vector(1 downto 0);
rd,wr:in std_logic;
ldrut std_logic_vector(3 downto 0);
Rbusut std_logic_vector(3 downto 0)
);
end muxrs;
architecture rtl of muxrs is
begin
process(sel)
begin
if(rd='1'and wr='0') then
case sel is
when "00"=>ldr<="0000";Rbus<="1110";
when "01"=>ldr<="0000";Rbus<="1101";
when "10"=>ldr<="0000";Rbus<="1011";
when "11"=>ldr<="0000";Rbus<="0111";
when others=>Rbus<="1111";ldr<="0000";
end case;
elsif (rd='0' and wr='1') then
case sel is
when "00"=>ldr<="0001";Rbus<="1111";
when "01"=>ldr<="0010";Rbus<="1111";
when "10"=>ldr<="0100";Rbus<="1111";
when "11"=>ldr<="1000";Rbus<="1111";
when others=>ldr<="0000";Rbus<="1111";
end case;
else ldr<="0000";Rbus<="1111";
end if;
end process;
end rtl;
波形仿真如下
是不是WHEN OTHERS不包括条件为高阻态的情况?但如果是这样那么RBUS输出也应该受影响啊。为什么只有
LDR出现这样奇怪的现象?
[em06]要求:
(1)具有时、分、秒计数显示功能,以24小时循环计时。
(2)具有清零,调节小时、分钟的功能。
(3)实验现象:K1代表调节分钟,K2代表调节小时;数码管SM3~SM8显示具体时间;K17为清零信号RESET(低电平有效);发光二极管LED1~LED3分别代表程序中的LAMP0~LAMP2信号;另外将计数频率(CLK)设置为1Hz(TJ1处,数码管显示的数值每隔一秒变化一次),报时频率(SPCLK)设置为1024Hz(TJ5处)。当程序下载完毕后数码管从00时00分00秒开始计时,通过按键K1可以调节时钟的分钟显示,通过按键K2可以调节时钟的小时显示(调节时钟时应将按键所对应的拨位开关KD1和KD2拨向下;拨位开关KD1和KD2拨向上时,数字钟正常计时)。当时钟走到整点时,喇叭开始鸣叫(1分钟,通过电位器SW1可以调节音量的大小),发光二极管LED1~LED3循环闪烁。
(4)对自己所设计的VHDL程序进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
(5)引脚锁定以及硬件下载测试欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |