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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1911|回复: 2

[原创] 请教vhdl里面的sll的用法?

[复制链接]
发表于 2022-5-20 04:29:24 | 显示全部楼层 |阅读模式

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

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

x
原来是用verilog,现在有个vhdl的代码需要改一下,想用sll,不咋会用,请教大家.
signal   tirg_reg      :std_logic;

signal   o_reg1       :std_logic_vector(7 downto 0);  

signal   source_reg :std_logic_vertor(7 downto 0);
signal   source_shift_reg :std_logic_vertor(2 downto 0);

signal   shift_reg    :std_logic_vertor(7 downto 0);
signal   shift_cnt    :std_logic_vertor(2 downto 0);

1.  每隔一段时间trig_reg会有一个时钟宽度的触发信号;
2.   trig_reg有效时,从source_reg 和source_shift_reg  取得 数据;
3.  shift_reg   为source_reg向左移位source_shift_reg次的数据;

vhdl只有variable类型的变量才能进行移位操作

    process (nx_state,clk) ---------------------------------------------------------------------------- ------------------------------first segment
    begin
        if (resetn = '0'  ) then
                shift_reg <= (others => '0');
        elsif rising_edge(clk)then            
                shift_reg <= std_logic_vector(unsigned(source_reg) sll unsigned(source_shift_reg));
        end if;
    end process;

象上面这样经类型转换后再用sll,仿真错误;  sll如何实现对signal信号的 灵活移位?




发表于 2022-5-20 14:23:13 | 显示全部楼层
1. 库的声明:

1)  use IEEE.std_logic_1164.all;
     要使用这个库里面:To_StdLogicVector、To_bitvector两个类型转换函数

2) use IEEE.std_logic_unsigned.all;

   要使用这个库里面:CONV_INTEGER类型转换函数

然后:

   shift_reg      <= To_StdLogicVector( To_bitvector(source_reg) sll CONV_INTEGER(source_shift_reg) );

   sll操作符,左边要求是bit_vector类型的信号,右边要求是integer类型的信号。

   sll这个操作符我没用过,以上也是翻书所得。上述代码语法我试过没问题,综合结果看平台。
 楼主| 发表于 2022-5-23 22:06:38 | 显示全部楼层
收到,非常感谢,我试下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-28 21:14 , Processed in 0.016776 second(s), 6 queries , Gzip On, Redis On.

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