哪位能帮我看下这段VHDL程序,在线等

wohu007 2011-06-02 09:13:03
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity dis is
PORT( o1:IN STD_LOGIC_VECTOR(3 downto 0);
o2:IN STD_LOGIC_VECTOR(3 downto 0);
o3:IN STD_LOGIC_VECTOR(3 downto 0); --十进制BCD码输入
dis_clk,k,clr:IN STD_LOGIC;
-- dis_clk为显示扫描时钟,k为量程控制信号,clr为复位信号
o:BUFFER STD_LOGIC_VECTOR(3 downto 0);
dis_ctrl:OUT STD_LOGIC_VECTOR(2 downto 0); --显示控制信号
dis_s:OUT STD_LOGIC_VECTOR(6 downto 0); --数码管译码值
dot:OUT STD_LOGIC_VECTOR(2 downto 0)); --显示小数点位
end dis;

architecture Behavioral of dis is
signal i: STD_LOGIC_VECTOR(1 downto 0);
begin
process(dis_clk)
begin
if clr='0' --复位
then o<=X"0";
dis_ctrl<="000";
dis_s<="0000000";
dot<="111";
i<="00";
else
if dis_clk'event and dis_clk='1'
then
if i="10"
then i<="00";
else i<=i+1;
end if;

case i is --3个数码管依次显示
when "00" => o<=o1;dis_ctrl<="100";
when "01" => o<=o2;dis_ctrl<="010";
when "10" => o<=o3;dis_ctrl<="001";
when others => o<=X"0";dis_ctrl<="000";
end case ;

if k='0' --显示小数点位置
then dot<="001";
else dot<="100";
end if;

case o is --数码管译码值
when X"0" => dis_s<="1000000";
when X"1" => dis_s<="1111001";
when X"2" => dis_s<="0100100";
when X"3" => dis_s<="0110000";
when X"4" => dis_s<="0011001";
when X"5" => dis_s<="0010010";
when X"6" => dis_s<="0000011";
when X"7" => dis_s<="1111000";
when X"8" => dis_s<="0000000";
when X"9" => dis_s<="0011000";
when others => dis_s<="0000000";
end case;
end if;
end if;
end process;
end Behavioral;
...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wohu007 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mhbbcrcpj 的回复:]
引用 3 楼 wohu1104 的回复:
引用 2 楼 mhbbcrcpj 的回复:
我编译的时候没有报错,你是不是没有创建工程?还有工程名,VHDL文件的名字和代码中entity的名字好像应该是一样的。具体是怎么规定的我不太清楚,反正我全都是起的一样的名字,没出过问题。
还有你用什么编译的?我用的是Quartus II 11.0。


我用的是MAX PLUS 2 老是提示 dupl……
[/Quote]


谢谢 了 就是改了下就能通过了 太感谢您了
MHBBCRCPJ 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wohu1104 的回复:]
引用 2 楼 mhbbcrcpj 的回复:
我编译的时候没有报错,你是不是没有创建工程?还有工程名,VHDL文件的名字和代码中entity的名字好像应该是一样的。具体是怎么规定的我不太清楚,反正我全都是起的一样的名字,没出过问题。
还有你用什么编译的?我用的是Quartus II 11.0。


我用的是MAX PLUS 2 老是提示 duplicate pin name o1 不知道咋……
[/Quote]

应该是和系统用过的标号重名了,你把o1换成别的标号。用Ctrl+H替换。一般这个快捷键都是替换。
wohu007 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mhbbcrcpj 的回复:]
我编译的时候没有报错,你是不是没有创建工程?还有工程名,VHDL文件的名字和代码中entity的名字好像应该是一样的。具体是怎么规定的我不太清楚,反正我全都是起的一样的名字,没出过问题。
还有你用什么编译的?我用的是Quartus II 11.0。
[/Quote]

我用的是MAX PLUS 2 老是提示 duplicate pin name o1 不知道咋回事 望赐教
MHBBCRCPJ 2011-06-02
  • 打赏
  • 举报
回复
我编译的时候没有报错,你是不是没有创建工程?还有工程名,VHDL文件的名字和代码中entity的名字好像应该是一样的。具体是怎么规定的我不太清楚,反正我全都是起的一样的名字,没出过问题。
还有你用什么编译的?我用的是Quartus II 11.0。
wohu007 2011-06-02
  • 打赏
  • 举报
回复
为什么编译通不过?

6,127

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧