第二步:建立一个名为MUX_0的乘法器

第三步:在程序中例化,看以下程序。

-- 该程序用来实现复数的乘法,端口分别定义的复数的

-- 输入的实部和虚部和输出的实部和虚部

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

LIBRARY LPM;

USE LPM.LPM_COMPONENTS.ALL;

ENTITY plural_mux IS

PORT(

r_in  : IN  STD_LOGIC_VECTOR(  7 DOWNTO 0 );

i_in  : IN  STD_LOGIC_VECTOR(  7 DOWNTO 0 );

r_out : OUT STD_LOGIC_VECTOR( 15 DOWNTO 0 );

i_out : OUT STD_LOGIC_VECTOR( 15 DOWNTO 0 );

clk   : IN  STD_LOGIC;

rst_n : IN  STD_LOGIC

);

END plural_mux;

ARCHITECTURE beh OF plural_mux IS

--乘法器的例化声明

--在这里我们要注意,例化的声明和和信号的定义都是在ARCHITECTURE的BEGIN之前--的

COMPONENT MUX_0

PORT(clock : IN STD_LOGIC     ;

dataa   : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 );

datab   : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 );

result : OUT STD_LOGIC_VECTOR( 15 DOWNTO 0 )

);

END COMPONENT;

COMPONENT  ADD_SUB_0

PORT  (

add_sub : IN STD_LOGIC;

clock   : IN STD_LOGIC;

dataa   : IN STD_LOGIC_VECTOR(15 DOWNTO 0);

datab   : IN STD_LOGIC_VECTOR(15 DOWNTO 0);

result   : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)

);

END COMPONENT;

SIGNAL r_in_reg1 : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL r_in_reg2 : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL i_in_reg1 : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL i_in_reg2 : STD_LOGIC_VECTOR( 7 DOWNTO 0 );

SIGNAL mux_reg1:STD_LOGIC_VECTOR( 15 DOWNTO 0 );

SIGNAL mux_reg2:STD_LOGIC_VECTOR( 15 DOWNTO 0 );

SIGNAL mux_reg3:STD_LOGIC_VECTOR( 15 DOWNTO 0 );

SIGNAL mux_reg4:STD_LOGIC_VECTOR( 15 DOWNTO 0 );

SIGNAL ad_sb_o1 :STD_LOGIC_VECTOR(15 DOWNTO 0 );

SIGNAL ad_sb_o2 :STD_LOGIC_VECTOR(15 DOWNTO 0 );

BEGIN

PROCESS( clk ,rst_n)

BEGIN

IF ( rst_n = '0' )THEN

r_in_reg1 <= "00000000";

r_in_reg2 <= "00000000";

i_in_reg1 <= "00000000";

i_in_reg2 <= "00000000";

ELSIF( clk'EVENT AND clk = '1') THEN

r_in_reg1 <= r_in;

r_in_reg2 <= r_in_reg1;

i_in_reg1 <= i_in;

i_in_reg2 <= i_in_reg1;

END IF;

END PROCESS;

--乘法器的例化实例

I_MUX_00 : MUX_0

PORT MAP (clk,r_in_reg1, r_in_reg2,mux_reg1);

I_MUX_01 : MUX_0

PORT MAP (clk,r_in_reg1, i_in_reg2,mux_reg2);

I_MUX_02 : MUX_0

PORT MAP (clk,i_in_reg1, r_in_reg2,mux_reg3);

I_MUX_04 : MUX_0

PORT MAP (clk,i_in_reg1, i_in_reg2,mux_reg4);

I_ADD_SUB_00 : ADD_SUB_0

PORT MAP('0',clk,mux_reg1,mux_reg4,ad_sb_o1);

I_ADD_SUB_02 : ADD_SUB_0

PORT MAP('1',clk,mux_reg2,mux_reg3,ad_sb_o2);

r_out <= ad_sb_o1;

i_out <= ad_sb_o2;

END beh;

最新文章

  1. ASP.NET Core 开发-中间件(Middleware)
  2. 【C++】输入多行数字到数组
  3. R语言-用R眼看琅琊榜小说的正确姿势
  4. 项目里总结出来的log4j模板
  5. Android入门(十七)Android多线程
  6. SQL Server逻辑读、预读和物理读
  7. chm转换为html的超简单方法
  8. SQL 修改数据库架构名
  9. cocos中常用到的单例模式
  10. phonegap 退出确认
  11. 点击空白处隐藏指定dom元素(纯javascript方法)
  12. esxi 改变虚拟机磁盘格式为精简存储
  13. javascript 通过模块模式实现代码访问控制
  14. 编译jmeter5.0源码
  15. web中ios移动端软键盘收起后,页面内容留白不下滑
  16. JMeter中返回Json数据的处理方法(转)
  17. Source Insight里头文件注释和函数头的注释
  18. 【iCore4 双核心板_ARM】例程十三:SDIO实验——读取SD卡信息
  19. 使用JFreeChart实现基于Web的柱状图
  20. weka中算法说明[转]

热门文章

  1. Haskell语言学习笔记(38)Lens(1)
  2. C#四舍五入说明
  3. linux 用户管理(3)----查看用户登录时间以及命令历史
  4. 安装和使用iOS的包管理工具CocoaPods
  5. js base64转二进制
  6. jQuery实现锚点滑动定位
  7. python单线程下实现多个socket并发
  8. jquery源码学习-初始(1)
  9. MyEclipse2018.9.0设置全局编码
  10. nginx反向代理架构与安装配置(一)