【FPGA混动】基于FPGA的混沌系统开发

245 篇文章 388 订阅
11 篇文章 19 订阅

1.软件版本

MATLAB2013b,quartusii12.1

2.本算法理论知识

在本系统中,我们使用的混动公式如下所示:

3.部分核心代码 

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_arith.ALL;
ENTITY DELAY2 IS 
PORT( clk   : IN  STD_LOGIC;
 	  clear : IN  STD_LOGIC;
      Dx    : in signed          (27 DOWNTO 0);
      Dy    : in signed          (27 DOWNTO 0);
      Dz    : in signed          (27 DOWNTO 0);
	  Doutx : OUT SIGNED         (27 DOWNTO 0); 
	  Douty : OUT SIGNED         (27 DOWNTO 0); 
	  Doutz : OUT SIGNED         (27 DOWNTO 0) 
	  ); 
	  
END DELAY2; 

ARCHITECTURE a OF DELAY2 IS 
BEGIN 
  PROCESS(clk,clear) 
    BEGIN 
	  IF clear='0' THEN
		 Doutx<="0000000000100000110001000000";
		 Douty<="0000000000000110100011010000";
		 Doutz<="0000000000111010111110110000";		 		 
	  ELSIF clear='1' THEN
	    IF(clk'EVENT AND clk='1') THEN
		 Doutx<=Dx;
		 Douty<=Dy;
		 Doutz<=Dz;			  
	    END IF; 
	  END IF; 
  END PROCESS; 
END a; 
LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY lpm;
USE lpm.all;

ENTITY mult_0872b00 IS
	PORT
	(
		dataa		: IN STD_LOGIC_VECTOR (27 DOWNTO 0);
		result		: OUT STD_LOGIC_VECTOR (55 DOWNTO 0)
	);
END mult_0872b00;


ARCHITECTURE SYN OF mult_0872b00 IS

	SIGNAL sub_wire0	: STD_LOGIC_VECTOR (55 DOWNTO 0);
	SIGNAL sub_wire1_bv	: BIT_VECTOR (27 DOWNTO 0);
	SIGNAL sub_wire1	: STD_LOGIC_VECTOR (27 DOWNTO 0);



	COMPONENT lpm_mult
	GENERIC (
		lpm_hint		: STRING;
		lpm_representation		: STRING;
		lpm_type		: STRING;
		lpm_widtha		: NATURAL;
		lpm_widthb		: NATURAL;
		lpm_widthp		: NATURAL
	);
	PORT (
			dataa	: IN STD_LOGIC_VECTOR (27 DOWNTO 0);
			datab	: IN STD_LOGIC_VECTOR (27 DOWNTO 0);
			result	: OUT STD_LOGIC_VECTOR (55 DOWNTO 0)
	);
	END COMPONENT;

BEGIN
	sub_wire1_bv(27 DOWNTO 0) <= "0000100001110010101100000000";
	sub_wire1    <= To_stdlogicvector(sub_wire1_bv);
	result    <= sub_wire0(55 DOWNTO 0);

	lpm_mult_component : lpm_mult
	GENERIC MAP (
		lpm_hint => "INPUT_B_IS_CONSTANT=YES,MAXIMIZE_SPEED=5",
		lpm_representation => "SIGNED",
		lpm_type => "LPM_MULT",
		lpm_widtha => 28,
		lpm_widthb => 28,
		lpm_widthp => 56
	)
	PORT MAP (
		dataa => dataa,
		datab => sub_wire1,
		result => sub_wire0
	);



END SYN;
LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY lpm;
USE lpm.all;

ENTITY mult_0ff3b64 IS
	PORT
	(
		dataa		: IN STD_LOGIC_VECTOR (27 DOWNTO 0);
		result		: OUT STD_LOGIC_VECTOR (55 DOWNTO 0)
	);
END mult_0ff3b64;


ARCHITECTURE SYN OF mult_0ff3b64 IS

	SIGNAL sub_wire0	: STD_LOGIC_VECTOR (55 DOWNTO 0);
	SIGNAL sub_wire1_bv	: BIT_VECTOR (27 DOWNTO 0);
	SIGNAL sub_wire1	: STD_LOGIC_VECTOR (27 DOWNTO 0);



	COMPONENT lpm_mult
	GENERIC (
		lpm_hint		: STRING;
		lpm_representation		: STRING;
		lpm_type		: STRING;
		lpm_widtha		: NATURAL;
		lpm_widthb		: NATURAL;
		lpm_widthp		: NATURAL
	);
	PORT (
			dataa	: IN STD_LOGIC_VECTOR (27 DOWNTO 0);
			datab	: IN STD_LOGIC_VECTOR (27 DOWNTO 0);
			result	: OUT STD_LOGIC_VECTOR (55 DOWNTO 0)
	);
	END COMPONENT;

BEGIN
	sub_wire1_bv(27 DOWNTO 0) <= "0000111111110011101101100100";
	sub_wire1    <= To_stdlogicvector(sub_wire1_bv);
	result    <= sub_wire0(55 DOWNTO 0);

	lpm_mult_component : lpm_mult
	GENERIC MAP (
		lpm_hint => "INPUT_B_IS_CONSTANT=YES,MAXIMIZE_SPEED=5",
		lpm_representation => "SIGNED",
		lpm_type => "LPM_MULT",
		lpm_widtha => 28,
		lpm_widthb => 28,
		lpm_widthp => 56
	)
	PORT MAP (
		dataa => dataa,
		datab => sub_wire1,
		result => sub_wire0
	);



END SYN;

4.操作步骤与仿真结论

 

5.参考文献

[1]谢国波, 陈平华, 蔡兆波. 一种二次三项式通用FPGA混沌产生器设计[J]. 微计算机信息, 2009, 25(008):215-217.A07-05

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值