《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 其他 > 入門:Xilinx SRL16E如何實現16移位寄存器

入門:Xilinx SRL16E如何實現16移位寄存器

2022-08-30
來源:FPGA設計論壇
關鍵詞: XilinxSRL16E 寄存器

  在做FPGA的開發過程中經常會使用到移位寄存器,一般我們使用移位寄存器的目的都是為了將某個信號進行打拍,使得時序符合我們的需求。最常見的一種打拍方法就是在process過程語句中對信號進行移位(在verilog中是在always過程中進行移位)。但是這里我給大家介紹一下SRL6E,這個是Xilinx提供的一個原語,顧名思義,這是一個可以最大實現16位移位寄存的移位寄存器。

  需要注意的是,SRL16E原語在不同的器件中表現形式可能稍有區別,下面是在Kintex-7系列器件中的SRL16E原語:

  --使用原語時,需要加上這兩句

  Library UNISIM;

  use UNISIM.vcomponents.all;

  -- SRL16E: 16-bit shift register LUT with clock enable operaTIng on posedge of clock (Mapped to SliceM LUT6)

  --        Kintex-7

  -- Xilinx HDL Language Template, version 2017.4

  --以下時=是SRL16E原語

  SRL16E_inst : SRL16E

  generic map (

  INIT => X“0000”)--對寄存器進行初始化

  port map (

  Q => Q,       -- SRL data output--寄存器輸出端口

  A0 => A0,     -- Select[0] input--四個地址輸入端口

  A1 => A1,     -- Select[1] input

  A2 => A2,     -- Select[2] input

  A3 => A3,     -- Select[3] input

  CE => CE,     -- Clock enable input--寄存器使能端口

  CLK => CLK,   -- Clock input   --時鐘端口

  D => D        -- SRL data input--寄存器輸入端口

  );

  -- End of SRL16E_inst instanTIaTIon

  這里主要對地址進行一下說明。地址A3A2A1A0表明要對輸入數據進行多少移位。如果是A3A2A1A0=“0000”,說明是對D端口輸入數據進行1位移位,也就是說對D端口輸入的數據進行一個周期的延遲。如果是A3A2A1A0=“1111”,說明是對D端口輸入數據進行16位移位。

  下面舉一個例子來說明:

  這是源程序,因為A3A2A1A0=“0011”,所以主要是對輸入數據進行4個周期的延遲。

  ----------------------------------------------------------------------------------

  -- Company:

  -- Engineer:

  --

  -- Create Date: 2018/12/10 1605

  -- Design Name:

  -- Module Name: srl16e_test - Behavioral

  -- Project Name:

  -- Target Devices:

  -- Tool Versions:

  -- DescripTIon:

  --

  -- Dependencies:

  --

  -- Revision:

  -- Revision 0.01 - File Created

  -- Additional Comments:

  --

  ----------------------------------------------------------------------------------

  library IEEE;

  use IEEE.STD_LOGIC_1164.ALL;

  Library UNISIM;

  use UNISIM.vcomponents.all;

  -- Uncomment the following library declaration if using

  -- arithmetic functions with Signed or Unsigned values

  --use IEEE.NUMERIC_STD.ALL;

  -- Uncomment the following library declaration if instantiating

  -- any Xilinx leaf cells in this code.

  --library UNISIM;

  --use UNISIM.VComponents.all;

  entity srl16e_test is

  Port (

  clk     : in    std_logic;

  data_in : in    std_logic;

  data_out: out   std_logic

  );

  end srl16e_test;

  architecture Behavioral of srl16e_test is

  signal  q  : std_logic:='0';

  signal  d  : std_logic:='0';

  begin

  SRL16E_inst : SRL16E

  generic map (

  INIT => X“0000”)

  port map (

  Q => q,       -- SRL data output

  A0 => '1',     -- Select[0] input

  A1 => '1',     -- Select[1] input

  A2 => '0',     -- Select[2] input

  A3 => '0',     -- Select[3] input

  CE => '1',     -- Clock enable input

  CLK => clk,   -- Clock input

  D => d        -- SRL data input

  );

  d <= data_in;

  data_out <= q;

  end Behavioral;

  這是仿真文件:

  仿真文件中的輸入數據是一個周期的單脈沖。

  ----------------------------------------------------------------------------------

  -- Company:

  -- Engineer:

  --

  -- Create Date: 2018/12/10 1615

  -- Design Name:

  -- Module Name: tb_srl16e - Behavioral

  -- Project Name:

  -- Target Devices:

  -- Tool Versions:

  -- Description:

  --

  -- Dependencies:

  --

  -- Revision:

  -- Revision 0.01 - File Created

  -- Additional Comments:

  --

  ----------------------------------------------------------------------------------

  library IEEE;

  use IEEE.STD_LOGIC_1164.ALL;

  use IEEE.NUMERIC_STD.ALL;

  use IEEE.STD_LOGIC_ARITH.All;

  use IEEE.STD_LOGIC_UNSIGNED.All;

  -- Uncomment the following library declaration if using

  -- arithmetic functions with Signed or Unsigned values

  --use IEEE.NUMERIC_STD.ALL;

  -- Uncomment the following library declaration if instantiating

  -- any Xilinx leaf cells in this code.

  library UNISIM;

  use UNISIM.VComponents.all;

  entity tb_srl16e is

  end tb_srl16e;

  architecture Behavioral of tb_srl16e is

  component srl16e_test

  port(

  clk : in std_logic;

  data_in : in std_logic;

  data_out : out  std_logic

  );

  end component;

  signal clk ='1';

  signal in_data : std_logic:='0';

  signal out_data: std_logic:='0';

  begin

  uut: srl16e_test

  port map(

  clk => clk,

  data_in => in_data,

  data_out => out_data

  );

  process

  begin

  wait for 10 ns;

  clk <=  '0';

  wait for 10 ns;

  clk <=  '1';

  end process;

  process

  begin

  in_data <= '0';

  wait for 20 ns;

  in_data <= '1';

  wait for 20 ns;

  in_data <= '0';

  wait;

  end process;

  end Behavioral;

  仿真波形:

  輸入數據是data_in,輸出是data_out,可以看到對輸入數據進行了4個周期的延遲。

b59cd768-25b8-11ed-ba43-dac502259ad0.png



更多信息可以來這里獲取==>>電子技術應用-AET<<

mmexport1621241704608.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: www.91宅男宅女| 亚洲黄色在线观看视频 | 你懂的 在线观看 | 一级毛片成人免费看免费不卡 | 黄色一级片免费观看 | 一级特黄色片 | 噜噜噜噜精品视频在线观看 | 亚洲欧美激情精品一区二区 | 免费在线色视频 | 最黄网站| 国产91精品久久久久久久 | 男人影院在线 | 欧美人与动交tv | 国产xx做受视频国语对白 | 亚洲好色网 | 国产羞羞视频 | 亚洲国产情侣偷自在线二页 | 亚欧中文字幕 | 人人人人草 | 白丝国产| 欧美一级专区免费大片 | 自拍偷自拍亚洲精品10p | 久久久久免费精品国产 | 大香人蕉免费视频75 | 欧美中文在线 | 人人澡人人插 | 一二三四在线视频播放社区 | 免费观看日批视频 | 欧美日韩国产在线人成 | 思99re久久这里只有精品首页 | 色淫影院 | 午夜激情影院 | 一级特黄国产高清毛片97看片 | 欧美超高清在线观看 | 亚洲欧美18v中文字幕高清 | 先锋资源av | 中国黄色免费网站 | 成人免费播放视频777777 | 国产成人免费视频 | 一级做a毛片免费视频 | 男女一进一出免费视频 |