集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 6923|回复: 15

大家帮我看下这个程序该怎么改吧,谢谢了

[复制链接]
lszxwx 发表于 2012-5-18 16:26:33 | 显示全部楼层 |阅读模式


就是这个图,是一个简单的细胞自动机。
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY ca2 IS
                  PORT (clk : IN std_logic;
                   Q1,Q2,Q3,Q4: OUT std_logic);
END ca2;
ARCHITECTURE behavioral OF ca2 IS
     COMPONENT dff
     PORT (
         d,clk :IN STD_LOGIC;
         q:OUT STD_LOGIC );
     END COMPONENT;
     SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN   
     dffn_1: dff PORT MAP (data(0),clk,data(4));
     dffn_2: dff PORT MAP (data(1),clk,data(5));
     dffn_3: dff PORT MAP (data(2),clk,data(6));
     dffn_4: dff PORT MAP (data(3),clk,data(7));
     data(0) <= data(4) xor data(5);
     data(1) <= data(4) xor data(6);
     data(2) <= data(5) xor data(6) xor data(7);
     data(3) <= data(6);
     Q1 <= data(4);
     Q2 <= data(5);
     Q3 <= data(6);
     Q4 <= data(7);
END behavioral;

本帖子中包含更多资源

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

x
yoyo_note 发表于 2012-5-18 21:49:06 | 显示全部楼层
自己动手丰衣足食
把 COMPONENT去掉,直接改成自己定义的信号,

再把功能移到process 里面
vhdl sample很多的
 楼主| lszxwx 发表于 2012-5-18 22:02:48 | 显示全部楼层
回复 2# yoyo_note


    自己写了个,感觉初始信号都是0000,然后后面的就一直是0,该怎么解决?其实我是想做细胞自动机,就先写个4个寄存器的试试。谢谢~
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY ca3 IS
                  PORT (clk : IN std_logic;
                   Q1,Q2,Q3,Q4: OUT std_logic);
END ca3;
ARCHITECTURE behave OF ca3 IS
SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0);
BEGIN
data(0) <= 1;
cydff_inst:PROCESS (clk)
BEGIN
     IF ( clk='1' AND clk'LAST_VALUE='0' AND clk'EVENT ) THEN
         data(4) <=data(0);
         data(5) <=data(1);
         data(6) <=data(2);
         data(7) <=data(3);
     END IF;
     data(0) <= data(4) xor data(5);
     data(1) <= data(4) xor data(6);
     data(2) <= data(5) xor data(6) xor data(7);
     data(3) <= data(6);
     Q1 <= data(4);
     Q2 <= data(5);
     Q3 <= data(6);
     Q4 <= data(7);
END PROCESS;
END behave;
yoyo_note 发表于 2012-5-18 22:10:15 | 显示全部楼层
里面是xor,就是加法,初期值要有1奥
SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0) := "1111";
yoyo_note 发表于 2012-5-18 22:11:58 | 显示全部楼层
上面这个值只是sim时候有效,
实际项目的时候最好用异步复位初期化,
或者同步load初期值
 楼主| lszxwx 发表于 2012-5-18 22:24:57 | 显示全部楼层
回复 5# yoyo_note


    不知道为什么,在程序里初始化就会提示错误。方便qq或者邮箱吗?511843215 谢谢
yoyo_note 发表于 2012-5-18 22:34:37 | 显示全部楼层
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY ca3 IS
PORT (
        clk : IN std_logic;
        RST_N : IN std_logic;        -- low active
        Q1,Q2,Q3,Q4: OUT std_logic
);
END ca3;

ARCHITECTURE behave OF ca3 IS

        SIGNAL data :STD_LOGIC_VECTOR (7 DOWNTO 0);

BEGIN

        process (clk, RST_N) begin
                if (RST_N = '0') then
                        data(4) <=  '1';
                        data(5) <=  '1';
                        data(6) <=  '1';
                        data(7) <=  '1';
                elsif (clk'event and clk = '1') then
                 data(4) <= data(4) xor data(5);
                 data(5) <= data(4) xor data(6);
                 data(6) <= data(5) xor data(6) xor data(7);
                 data(7) <= data(6);
                end if;
        end process;      

     Q1 <= data(4);
     Q2 <= data(5);
     Q3 <= data(6);
     Q4 <= data(7);

END behave;
yoyo_note 发表于 2012-5-18 22:35:34 | 显示全部楼层
加了个RST_N,-- low active
 楼主| lszxwx 发表于 2012-5-18 22:48:34 | 显示全部楼层
回复 8# yoyo_note


    再问下,RST_N这个应该怎样设置?

本帖子中包含更多资源

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

x
yoyo_note 发表于 2012-5-18 22:51:47 | 显示全部楼层
RST_N在sim开始的给几个时钟的0,以后一直拉1
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-25 21:34 , Processed in 0.071029 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表