在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3645|回复: 18

[求助]请大侠们帮看此程序,小妹实在看不懂了

[复制链接]
发表于 2004-6-18 22:28:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
小妹对VHDL语言实在没研究,请大侠们看过程序后帮忙把实体中定义的输出输入端口详细标明一下,小妹在此谢过~~~
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ddd is
port(clk:in std_logic;
     din:in std_logic_vector(7 downto 0);
     aut std_logic_vector(5 downto 0);
     dout,qut std_logic_vector(7 downto 0);
     en,wr,cs,rdut std_logic);
end ddd;
architecture ddd_arc of ddd is
begin
process(clk)
variable x:std_logic;
variable state:integer range 0 to 1;
variable tmp:integer range 0 to 2;
variable aa:std_logic_vector(5 downto 0);
variable cnt:integer range 0 to 3;
variable do:std_logic_vector(7 downto 0);
begin if clk'event and clk='1' then
if x='0' then
wr<='1';
cs<='1';
rd<='1';
x:='1';
else
case state is
when 0=>case tmp is
when 0=>a<=aa;
case aa is
When"000000"=>do:="00000000";      
When"000001"=>do:="00000001";      
When"000010"=>do:="00000010";      
When"000011"=>do:="00000011";      
When"000100"=>do:="00000100";      
When"000101"=>do:="00000101";      
When"000110"=>do:="00000110";      
When"000111"=>do:="00000111";      
When"001000"=>do:="00001000";      
When"001001"=>do:="00001001";      
When"001010"=>do:="00001010";      
When"001011"=>do:="00001011";      
When"001100"=>do:="00001100";      
When"001101"=>do:="00001101";      
When"001110"=>do:="00001110";      
When"001111"=>do:="00001111";      
When"010000"=>do:="11110000";      
When"010001"=>do:="11110001";      
When"010010"=>do:="11110010";      
When"010011"=>do:="11110011";      
When"010100"=>do:="11110100";      
When"010101"=>do:="11110101";      
When"010110"=>do:="11110110";      
When"010111"=>do:="11110111";      
When"011000"=>do:="11111000";      
When"011001"=>do:="11111001";      
When"011010"=>do:="11111010";      
When"011011"=>do:="11111011";      
When"011100"=>do:="11111100";      
When"011101"=>do:="11111101";      
When"011110"=>do:="11111110";      
When"011111"=>do:="11111111";      
When"100000"=>do:="11111110";      
When"100001"=>do:="11111101";      
When"100010"=>do:="11111100";      
When"100011"=>do:="11111011";      
When"100100"=>do:="11111010";      
When"100101"=>do:="11111001";      
When"100110"=>do:="11111000";      
When"100111"=>do:="11110111";      
When"101000"=>do:="11110110";      
When"101001"=>do:="11110101";      
When"101010"=>do:="11110100";      
When"101011"=>do:="11110011";      
When"101100"=>do:="11110010";      
When"101101"=>do:="11110001";      
When"101110"=>do:="11110000";     
When"101111"=>do:="11111111";      
When"110000"=>do:="11101111";      
When"110001"=>do:="11011111";      
When"110010"=>do:="11001111";      
When"110011"=>do:="10111111";      
When"110100"=>do:="10101111";      
When"110101"=>do:="10011111";      
When"110110"=>do:="10001111";      
When"110111"=>do:="01111111";      
When"111000"=>do:="01101111";      
When"111001"=>do:="01011111";      
When"111010"=>do:="01001111";      
When"111011"=>do:="00111111";      
When"111100"=>do:="00101111";      
When"111101"=>do:="00011111";      
When"111110"=>do:="00001111";      
When"111111"=>do:="11111111";
when others=>null;
end case;
dout<=do;
tmp:=1;
when 1=>wr<='0';
cs<='0';
tmp:=2;
when 2=>aa:=aa+1;
if aa="000000"then
state:=1;
en<='1';
end if;
wr<='1';
cs<='1';
tmp:=0;
end case;
when 1=>case cnt is
when 0=>a<=aa;
aa:=aa+1;
cnt:=1;
when 1=>rd<='0';
cs<='0';
cnt:=2;
when 2=>q<=din;
cnt:=3;
when 3=>rd<='1';
cs<='1';
cnt:=0;
end case;
end case;
end if;
end if;
end process;
end ddd_arc;     
----------------------------------------------------------------------------
还有这个程序
library ieee;
use ieee.std_logic_1164.all;
entity scan1 is
port(aa:in std_logic_vector(7 downto 0);
     en:in std_logic;
     bb:inout std_logic_vector(7 downto 0);
     qq:out std_logic_vector(7 downto 0));
end scan1;
architecture san_arc of scan1 is
begin
process(aa,en,bb)
begin
if en='0'then
bb<=aa;
else
bb<="ZZZZZZZZ";
qq<=bb;
end if;
end process;
end san_arc;
发表于 2004-6-19 10:20:33 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

[这个贴子最后由iamchine在 2004/06/21 07:41am 第 3 次编辑]

Verilog看的懂吧?
module   ddd ( //inputs
clk,
din,
// outputs
a,
dout,
q,
en,
wr,
cs,
rd
);
// inputs
input          clk;
input   [7:0]  din;
// outputs
output  [5:0]  a;
output  [7:0]  dout;
output  [7:0]  q;
output         en;
output         wr;
output         cs;
output         rd;
// wires of inputs
wire           clk;
wire    [7:0]  din;
// wires of outputs

// regs of outputs
reg   [5:0]    a;
reg   [7:0]    dout;
reg   [7:0]    q;
reg            en;
reg            wr;
reg            cs;
reg            rd;
// internal signals
// wires of internal signals
// regs of internal signals
reg            x;
reg   [5:0]    aa;
reg   [7:0]    do;
// integers
integer        state;
integer        tmp;
integer        cnt;

// main code
always@(posedge clk)
begin
if(x==1'b0)
  begin
  wr <= 1'b1;
  cs <= 1'b1;
  rd <= 1'b1;
  x  <= 1'b1;
  end// end x==1'b0
else
  begin
    case (state)
      0 :
        begin
          case (tmp)
            0:
              begin
                a <= aa;
                case (aa)
                  6'b000000: do <= 8'b00000000;
                  6'b000001: do <= 8'b00000001;
                  6'b000010: do <= 8'b00000010;
                  6'b000011: do <= 8'b00000011;
                  6'b000100: do <= 8'b00000100;
                  6'b000101: do <= 8'b00000101;
                  6'b000110: do <= 8'b00000110;
                  6'b000111: do <= 8'b00000111;
                  6'b001000: do <= 8'b00001000;
                  6'b001001: do <= 8'b00001001;
                  6'b001010: do <= 8'b00001010;
                  6'b001011: do <= 8'b00001011;
                  6'b001100: do <= 8'b00001100;
                  6'b001101: do <= 8'b00001101;
                  6'b001110: do <= 8'b00001110;
                  6'b001111: do <= 8'b00001111;
                  6'b010000: do <= 8'b11110000;
                  6'b010001: do <= 8'b11110001;
                  6'b010010: do <= 8'b11110010;
                  6'b010011: do <= 8'b11110011;
                  6'b010100: do <= 8'b11110100;
                  6'b010101: do <= 8'b11110101;
                  6'b010110: do <= 8'b11110110;
                  6'b010111: do <= 8'b11110111;
                  6'b011000: do <= 8'b11111000;
                  6'b011001: do <= 8'b11111001;
                  6'b011010: do <= 8'b11111010;
                  6'b011011: do <= 8'b11111011;
                  6'b011100: do <= 8'b11111100;
                  6'b011101: do <= 8'b11111101;
                  6'b011110: do <= 8'b11111110;
                  6'b011111: do <= 8'b11111111;
                  6'b100000: do <= 8'b11111110;
                  6'b100001: do <= 8'b11111101;
                  6'b100010: do <= 8'b11111100;
                  6'b100011: do <= 8'b11111011;
                  6'b100100: do <= 8'b11111010;
                  6'b100101: do <= 8'b11111001;
                  6'b100110: do <= 8'b11111000;
                  6'b100111: do <= 8'b11110111;
                  6'b101000: do <= 8'b11110110;
                  6'b101001: do <= 8'b11110101;
                  6'b101010: do <= 8'b11110100;
                  6'b101011: do <= 8'b11110011;
                  6'b101100: do <= 8'b11110010;
                  6'b101101: do <= 8'b11110001;
                  6'b101110: do <= 8'b11110000;
                  6'b101111: do <= 8'b11111111;
                  6'b110000: do <= 8'b11101111;
                  6'b110001: do <= 8'b11011111;
                  6'b110010: do <= 8'b11001111;
                  6'b110011: do <= 8'b10111111;
                  6'b110100: do <= 8'b10101111;
                  6'b110101: do <= 8'b10011111;
                  6'b110110: do <= 8'b10001111;
                  6'b110111: do <= 8'b01111111;
                  6'b111000: do <= 8'b01101111;
                  6'b111001: do <= 8'b01011111;
                  6'b111010: do <= 8'b01001111;
                  6'b111011: do <= 8'b00111111;
                  6'b111100: do <= 8'b00101111;
                  6'b111101: do <= 8'b00011111;
                  6'b111110: do <= 8'b00001111;
                  6'b111111: do <= 8'b11111111;
                  default:
                endcase// end case aa
                dout <= do;
                tmp  <= 1;               
              end // end tmp=0
            1:
              begin
                wr <= 1'b0;
                cs <= 1'b0;
                tmp<= 2;           
              end// end tmp=1
            2:
              begin
                aa <= aa + 6'b1;
                if (~|aa)
                  begin
                    state <= 1;
                    en <= 1'b1;
                  end
                wr <= 1'b1;
                cs <= 1'b1;
                tmp<= 0;               
              end// end tmp=2
          endcase// end case tmp
        end// end state=0
      1:
        begin
          case (cnt)
            0: begin
                 a <= aa;
                 aa<= aa + 6'b1;
                 cnt <= 1;               
               end// end cnt=0
            1: begin
             rd <= 1'b0;
             cs <= 1'b0;
             cnt<= 2;
               end// end cnt=1
            2: begin
             q <= din;
             cnt <= 3;
               end// end cnt=2
            3: begin
             rd <= 1'b1;
             cs <= 1'b1;
             cnt <= 0;
               end// end cnt=3
          endcase// end case cnt
        end// end state=1
    endcase// end case state
  end// end x!=1'b1
end
endmodule
modulescan1( //inputs
aa,
en,
// inouts
bb,
// outputs
qq
);
// inputs
input  [7:0]   aa;
input          en;
// inout
inout  [7:0]   bb;
// outpus
output [7:0]   qq;
// wires
wire   [7:0]   aa;
wire           en;
// inout
wire   [7:0]   bb;
// outpus
wire   [7:0]   qq;

assign   qq = bb;
assign   bb = (!en) ? aa : 8'bzzzzzzzz;
endmodule// it's a bi-direction bus port
发表于 2004-6-19 10:34:12 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

蜉蝣真是热心。。。
发表于 2004-6-19 11:16:01 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

闲着也是闲着。
 楼主| 发表于 2004-6-19 12:52:01 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

蜉蝣,先谢谢您的好意了,不过我对你说的那种语言更是一窍不通,怎么办啊?我现在还很着急想懂得那个程序,请大家帮帮我,好不好?
发表于 2004-6-19 13:19:07 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

只听[咣当]一声,蜉蝣连人带椅向后摔倒。
发表于 2004-6-19 15:03:48 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

呵呵,那没有办法了:)
 楼主| 发表于 2004-6-19 21:47:38 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

哈哈,蜉蝣,还是要谢谢你,不管怎样,不过从你的意思里看出好象你说的那种语言比VHDL简单,那你看你打的那程序能看明白吗?如果可以的话,能不能帮帮忙,我真的很需要。我晓得程序不难,就是我自己太笨,你们都是高手,一定可以的,是不是?求求你们了,帮帮我,真的很需要。
发表于 2004-6-20 12:29:51 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

这是一个状态机的代码,你应先学习状态机的原理和工作。先看最简单的并有说明的。
 楼主| 发表于 2004-6-20 23:53:56 | 显示全部楼层

[求助]请大侠们帮看此程序,小妹实在看不懂了

各位大哥大姐啊,如果我有时间从头学,我还在这着急什么,谁又能一口吃个胖子啊?帮帮忙吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-14 00:45 , Processed in 0.038560 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表