ノート



カテゴリ:[ 趣味 ]


21件の内、新着の記事から10件ずつ表示します。


[21] sram

投稿者: 投稿日:2014年 8月 6日(水)00時35分3秒 e0109-106-188-106-255.uqwimax.jp  通報   返信・引用

sらm




[20] タイムチャート

投稿者: 投稿日:2014年 8月 5日(火)00時00分18秒 e0109-106-188-29-78.uqwimax.jp  通報   返信・引用

です



[19] keyb140804

投稿者: 投稿日:2014年 8月 4日(月)23時58分46秒 e0109-106-188-29-78.uqwimax.jp  通報   返信・引用

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity KEYB is
port( RESET : in  std_logic; --リセット
      PS2D : in  std_logic; --入力シリアルデータ
      PS2CK : in  std_logic; --10KHzクロック
      PSD : out std_logic_vector(7 downto 0);     --出力パラレルデータ
      COUNT : out std_logic_vector(3 downto 0);     --カウンタ
      LEDP : out std_logic;
       LEDS : out std_logic
     );
end KEYB;

architecture SHIFTREG of KEYB is

signal ps2d_tmp : std_logic_vector(10 downto 0);
signal count11  : std_logic_vector(3  downto 0);
signal scfpshift: std_logic_vector(10 downto 0);
signal scfp : std_logic;
signal sc : std_logic;
signal pcfp : std_logic;
signal pc : std_logic;
signal cry : std_logic_vector(8 downto 0);
signal oddpty : std_logic_vector(1 downto 0);
signal ps2d_tmpc0: std_logic_vector(1 downto 0);
signal ps2d_tmpc1: std_logic_vector(1 downto 0);
signal ps2d_tmpc2: std_logic_vector(1 downto 0);
signal ps2d_tmpc3: std_logic_vector(1 downto 0);
signal ps2d_tmpc4: std_logic_vector(1 downto 0);
signal ps2d_tmpc5: std_logic_vector(1 downto 0);
signal ps2d_tmpc6: std_logic_vector(1 downto 0);
signal ps2d_tmpc7: std_logic_vector(1 downto 0);
signal ps2d_tmpc8: std_logic_vector(1 downto 0);


begin

LEDP <= pc;
LEDS <= sc;
COUNT <= count11;

         ps2d_tmpc1 <=  cry(1) & ps2d_tmp(1);
         ps2d_tmpc2 <=  cry(2) & ps2d_tmp(2);
         ps2d_tmpc3 <=  cry(3) & ps2d_tmp(3);
         ps2d_tmpc4 <=  cry(4) & ps2d_tmp(4);
         ps2d_tmpc5 <=  cry(5) & ps2d_tmp(5);
         ps2d_tmpc6 <=  cry(6) & ps2d_tmp(6);
         ps2d_tmpc7 <=  cry(7) & ps2d_tmp(7);
         ps2d_tmpc8 <=  cry(8) & ps2d_tmp(8);

-- 10KHzカウンタ
process(RESET,PS2CK,count11)begin
if(RESET = '0' )then
  count11 <= "1010";
  cry     <= "000000000";
elsif(PS2CK'event and PS2CK ='0')then
if(count11 = "1010")then
count11 <= "0000";
else
count11 <= count11 + 1;
end if;
end if;
end process;

-- シリパラ変換
process(RESET,PS2CK)begin
if(RESET = '0' )then
ps2d_tmp <= "00000000000";
elsif(PS2CK'event and PS2CK ='0')then
ps2d_tmp <= ps2d_tmp(9 downto 0) & PS2D;
end if;
end process;


-- 奇数パリティチェック
-- データに1が奇数個あればパリティ'0'を追加してtotalの1の個数が奇数とする。
-- データに1が偶数個あればパリティ'1'を追加してtotalの1の個数が奇数とする。
process(RESET,PS2CK,count11,ps2d_tmp)begin
if(RESET = '0' )then
pc   <= '1';
pcfp <= '1';
elsif(PS2CK'event and PS2CK ='0')then
oddpty <= ps2d_tmpc1
+ ps2d_tmpc2
+ ps2d_tmpc3
+ ps2d_tmpc4
+ ps2d_tmpc5
+ ps2d_tmpc6
+ ps2d_tmpc7
+ ps2d_tmpc8;
if(count11 ="1001")then
if(ps2d_tmp(0) = oddpty(0))then
  pc   <= '0'; --pcはパリティチェック結果okによりLED消灯
  pcfp <= '0'; --pcfpはパリティチェックによるokフレーム
else
pc   <= '1';
pcfp <= '1';
end if;
else
  pc   <= pc;
  pcfp <= '1';
end if;
end if;
end process;




-- 同期チェック
process(RESET,PS2CK,count11,ps2d_tmp)begin
if(RESET = '0' )then
sc   <= '1';
scfp <= '1';
elsif(PS2CK'event and PS2CK ='0')then
if(count11 ="1010")then
if(ps2d_tmp(10)='0' and ps2d_tmp(0) ='1')then
sc   <= '0'; --scは同期チェック結果okによりLED消灯
scfp <= '0'; --scfpは同期チェックによるokフレーム
else
sc   <= '1';
scfp <= '1';
end if;
else
sc   <= sc;
scfp <= '1';
end if;
end if;
end process;

process(RESET,PS2CK)begin
if(RESET = '0' )then
scfpshift <= "00000000000";
elsif(PS2CK'event and PS2CK ='0')then
scfpshift <= scfpshift(9 downto 0) & scfp; --scfpshiftで10clk遅延(深さは11clk確保)
end if;
end process;

-- 外部出力
process(RESET,PS2CK,count11)begin
if(RESET = '0' )then
PSD <= "00000000";
elsif(PS2CK'event and PS2CK ='0')then
if(count11 = "1010")then
PSD <= ps2d_tmp(9 downto 2);
else
PSD <= "00000000";
end if;
end if;
end process;
end SHIFTREG;



[18] keyb140802

投稿者: 投稿日:2014年 8月 3日(日)22時00分43秒 e0109-106-188-30-212.uqwimax.jp  通報   返信・引用

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity KEYB is
port( RESET : in  std_logic; --リセット
      PS2D : in  std_logic; --入力シリアルデータ
      PS2CK : in  std_logic; --10KHzクロック
      PSD : out std_logic_vector(7 downto 0);     --出力パラレルデータ
      COUNT : out std_logic_vector(3 downto 0);     --カウンタ
      LEDP : out std_logic;
      LEDS : out std_logic
    );
end KEYB;

architecture SHIFTREG of KEYB is

signal ps2d_tmp : std_logic_vector(10 downto 0);
signal ps2d_tmpc: std_logic_vector(10 downto 0);
signal count11  : std_logic_vector(3  downto 0);
signal scfpshift: std_logic_vector(10 downto 0);
signal scfp : std_logic;
signal sc : std_logic;
signal pcfp : std_logic;
signal pc : std_logic;
signal cry : std_logic_vector(8 downto 0);
signal oddpty : std_logic_vector(1 downto 0);
signal ps2d_tmpc0: std_logic_vector(1 downto 0);
signal ps2d_tmpc1: std_logic_vector(1 downto 0);
signal ps2d_tmpc2: std_logic_vector(1 downto 0);
signal ps2d_tmpc3: std_logic_vector(1 downto 0);
signal ps2d_tmpc4: std_logic_vector(1 downto 0);
signal ps2d_tmpc5: std_logic_vector(1 downto 0);
signal ps2d_tmpc6: std_logic_vector(1 downto 0);
signal ps2d_tmpc7: std_logic_vector(1 downto 0);
signal ps2d_tmpc8: std_logic_vector(1 downto 0);


begin

LEDP <= pc;
LEDS <= sc;

        ps2d_tmpc0 <=  cry(0) & ps2d_tmp(0);
        ps2d_tmpc1 <=  cry(1) & ps2d_tmp(1);
        ps2d_tmpc2 <=  cry(2) & ps2d_tmp(2);
        ps2d_tmpc3 <=  cry(3) & ps2d_tmp(3);
        ps2d_tmpc4 <=  cry(4) & ps2d_tmp(4);
        ps2d_tmpc5 <=  cry(5) & ps2d_tmp(5);
        ps2d_tmpc6 <=  cry(6) & ps2d_tmp(6);
        ps2d_tmpc7 <=  cry(7) & ps2d_tmp(7);
        ps2d_tmpc8 <=  cry(8) & ps2d_tmp(8);

-- 10KHzカウンタ
process(RESET,PS2CK,scfp,count11)begin
if(RESET = '0' )then
count11 <= "0000";
elsif(PS2CK'event and PS2CK ='0')then
if(scfpshift(9) = '0' or count11 = "1010")then
count11 <= "0000";
else
count11 <= count11 + 1;
end if;
end if;
end process;


-- 奇数パリティチェック
-- データに1が奇数個あればパリティ'0'を追加してtotalの1の個数が奇数とする。
-- データに1が偶数個あればパリティ'1'を追加してtotalの1の個数が奇数とする。
process(RESET,PS2CK,count11,ps2d_tmp)begin
if(RESET = '0' )then
pc   <= '1';
pcfp <= '1';
elsif(PS2CK'event and PS2CK ='0')then
oddpty <= ps2d_tmpc0
+ ps2d_tmpc1
+ ps2d_tmpc2
+ ps2d_tmpc3
+ ps2d_tmpc4
+ ps2d_tmpc5
+ ps2d_tmpc6
+ ps2d_tmpc7
+ ps2d_tmpc8;
if(count11 ="1001")then
if(oddpty(0) ='1')then
pc   <= '0'; --pcはパリティチェック結果okによりLED消灯
pcfp <= '0'; --pcfpはパリティチェックによるokフレーム
else
pc   <= '1';
pcfp <= '1';
end if;
else
pc   <= pc;
pcfp <= '1';
end if;
end if;
end process;




-- 同期チェック
process(RESET,PS2CK,count11,ps2d_tmp)begin
if(RESET = '0' )then
sc   <= '1';
scfp <= '1';
elsif(PS2CK'event and PS2CK ='0')then
if(count11 ="1010")then
if(ps2d_tmp(10)='0' and ps2d_tmp(0) ='1')then
sc   <= '0'; --scは同期チェック結果okによりLED消灯
scfp <= '0'; --scfpは同期チェックによるokフレーム
else
sc   <= '1';
scfp <= '1';
end if;
else
sc   <= sc;
scfp <= '1';
end if;
end if;
end process;

process(RESET,PS2CK)begin
if(RESET = '0' )then
scfpshift <= "00000000000";
elsif(PS2CK'event and PS2CK ='0')then
scfpshift <= scfpshift(10 downto 0) & scfp; --scfpshiftで10clk遅延(深さは11clk確保)
end if;
end process;


-- シリパラ変換
process(RESET,PS2CK)begin
if(RESET = '0' )then
ps2d_tmp <= "00000000";
elsif(PS2CK'event and PS2CK ='0')then
ps2d_tmp <= ps2d_tmp(10 downto 0) & PS2D;
end if;
end process;

-- 外部出力
process(RESET,PS2CK,count11)begin
if(RESET = '0' )then
count11 <= "0000";
elsif(PS2CK'event and PS2CK ='0')then
if(count11 = "1010")then
PSD <= ps2d_tmp(9 downto 2);
else
PSD <= "00000000";
end if;
end if;
end process;
end SHIFTREG;



[17] tp_keyb.vhd

投稿者: me 投稿日:2014年 7月31日(木)17時16分3秒 FLH9Aac003.chb.mesh.ad.jp  通報   返信・引用

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity TEST_BENCH_KEYB is
end TEST_BENCH_KEYB;

architecture RTL of TEST_BENCH_KEYB is

component KEYB
port( RESET : in  std_logic; --リセット
      PS2D : in  std_logic; --入力シリアルデータ
      PS2CK : in  std_logic; --10KHzクロック
      PSD : out std_logic_vector(7 downto 0);   --出力パラレルデータ
      COUNT : out std_logic_vector(3 downto 0);   --カウンタ
      LEDP : out std_logic;
      LEDS : out std_logic;
  );
end component;

constant CYCLE:time:=  100us;
signal reset,ps2d : std_logic;
signal ps2ck      : std_logic;
signal psd        : std_logic_vector(7 downto 0);
signal count      : std_logic_vector(3 downto 0);
signal ledp,leds  : std_logic;
signal outcnt     : std_logic_vector(3 downto 0);

begin
  testkey:KEYB port map(reset,ps2d,ps2ck,psd,count,ledp,leds);
process begin
  ps2ck <= '0';
  wait for CYCLE/2;
  ps2ck <= '1';
  wait for CYCLE/2;
end process;

reset <= '0',
  '1' after 100 ns;

process begin
  if(ps2ck'event and ps2ck ='0') then
if(outcnt = )then
outcnt <= outcnt +1;

end process;



[16] tb_clk.vhd

投稿者: me 投稿日:2014年 7月31日(木)16時22分1秒 FLH9Aac003.chb.mesh.ad.jp  通報   返信・引用

--使用ライブラリの設定
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity TEST_BENCH_CLK is
end TEST_BENCH_CLK;

architecture RTL of TEST_BENCH_CLK is

component CLK
port(RESET  : in  std_logic;  -- リセット
      CLK    : in  std_logic;  -- 50MHzクロック
      SCLK   : out std_logic;  --500KHzクロック
      MCLK   : out std_logic
      ); --  1MHzクロック
end component;

constant CYCLE:time:= 20 ns;
signal reset,tclk : std_logic;
signal sclk,mclk : std_logic;

begin
testclk:CLK port map(reset,tclk,sclk,mclk);
process begin
--クロックの記述のようにセンシティビティ・リストがなければ,「無限ループ」として動作します.
tclk <= '0';
wait for CYCLE/2;
tclk <= '1';
wait for CYCLE/2;
end process;
reset <= '0',
'1' after 100 ns;

--● アーキテクチャ本体で,シミュレーション入力を記述
--検証対象の呼び出しは,アーキテクチャ本体で行います.
--もし,シミュレーション・モデルなどがあれば,ここで検証対象に接続します.
--VHDLでは呼び出されたモジュールをインスタンスと呼ぶので、 名前とは component instance name と言うことができる。
--port(TRESET : out  std_logic;  -- リセット
--     TCLK   : out  std_logic;  -- 50MHzクロック
--     TCLKOS : in   std_logic;  -- 出力CLK
--     TCLKOM : in   std_logic;  -- 出力CLK
--       ); --  1MHzクロック
end RTL;



[15] clk.vhd

投稿者: me 投稿日:2014年 7月31日(木)16時20分17秒 FLH9Aac003.chb.mesh.ad.jp  通報   返信・引用

--使用ライブラリの設定
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity CLK is
port(RESET  : in  std_logic;  -- リセット
      CLK    : in  std_logic;  -- 50MHzクロック
      SCLK   : out std_logic;  --500KHzクロック
      MCLK   : out std_logic
      ); --  1MHzクロック
end CLK;

architecture RTL of CLK is

signal   clks: std_logic;
signal  sclks: std_logic;
signal  mclks: std_logic;
signal   cnts: std_logic_vector(5 downto 0);

begin
clks  <= CLK;
SCLK <= sclks;
MCLK <= mclks;

process(RESET,clks,cnts)
begin
if(RESET = '0' )then
   cnts  <= "000000";
elsif(clks'event and clks ='0')then
  if(cnts = "110001")then
cnts <= "000000";
  else
cnts <= cnts + 1;
  end if;
end if;
end process;

process(RESET,clks,cnts)
begin
if(RESET = '0' )then
   mclks <= '1';
elsif(clks'event and clks ='0')then
    if(cnts > "010111")then
mclks <= '0';
    else
        mclks <= '1';
    end if;
  end if;
end process;

process(RESET,mclks)
begin
if(RESET = '0' )then
sclks <= '1';
elsif(mclks'event and mclks ='0')then
sclks <= not sclks;
end if;
end process;
end RTL;



[14] clk

投稿者: me 投稿日:2014年 7月30日(水)16時57分41秒 FLH9Aac003.chb.mesh.ad.jp  通報   返信・引用

--使用ライブラリの設定
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity CLK is
port(RESET  : in  std_logic;  -- リセット
      CLK    : in  std_logic;  -- 50MHzクロック
      SCLK   : out std_logic;  --500KHzクロック
      MCLK   : out std_logic
      ); --  1MHzクロック
end CLK;

architecture CLK of CLK is

signal   clk: std_logic;
signal  sclk: std_logic;
signal  mclk: std_logic;
signal   cnt: std_logic_vector(5 downto 0);

clk  <= CLK;
SCLK <= sclk;
MCLK <= mclk;

process(RESET,clk)
begin
if(RESET = '0' )then
   cnt  <= "000000";
elsif(clk'event and clk ='0')then
  if(cnt = "110001")then
cnt <= "000000";
  else
cnt <= cnt + 1;
  end if;
end if;
end process;

process(RESET,mclk)
begin
if(RESET = '0' )then
   mclk <= '1';
sclk <= '1';
elsif(mclk'event and mclk ='0')then
sclk <= not sclk;
end if;
end process;
end CLK;



[13] (無題)

投稿者: me 投稿日:2014年 7月30日(水)15時02分32秒 FLH9Aac003.chb.mesh.ad.jp  通報   返信・引用

--使用ライブラリの設定
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;

entity CLK is
port(RESET  : in  std_logic;  -- リセット
      CLK    : in  std_logic;  -- 50MHzクロック
      SCLK   : out std_logic;  --500KHzクロック
      MCLK   : out std_logic
      ); --  1MHzクロック
end CLK;

architecture henkan of CLK is

signal   clk: std_logic;
signal  sclk: std_logic;
signal  mclk: std_logic;
signal   cnt: std_logic_vector(5 downto 0);

clk  <= CLK;
SCLK <= sclk;
MCLK <= mclk;

process(RESET,clk)
begin
if(RESET = '0' )then
   cnt  <= "000000";
elsif(clk'event and clk ='0')then
  if(cnt = "110001")then
cnt <= "000000";
  else
cnt <= cnt + 1;
  end if;
end if;
end process;

process(RESET,mclk)
begin
if(RESET = '0' )then
   mclk <= '1';
sclk <= '1';
elsif(mclk'event and mclk ='0')then
sclk <= not sclk;
end if;
end process;



[12] (無題)

投稿者: me 投稿日:2014年 7月29日(火)14時42分50秒 FLH9Aac003.chb.mesh.ad.jp  通報   返信・引用

--使用ライブラリの設定
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
use std.textio.all;


--エンティティ リスト
--使用するソフトマクロにより変更してください。
entity syn_ram_256x16_iror is
    --pragma translate_off
    generic ( LPM_FILE : string := "UNUSED" );
    --pragma translate_on
    port(DOUTT      : inout std_logic_vector(15 downto 0);
         ADDRT      : in std_logic_vector(7 downto 0);
         OET        : in std_logic;
         CET        : in std_logic;
         WET        : in std_logic;
         LBT        : in std_logic;
         UBT        : in std_logic;
     );
end syn_ram_256x16_iror;

architecture RAM of syn_ram_256x16_iror is

-- 使用するRAMのビット幅、アドレスサイズによって変更。
-- サブタイプとは、既にあるデータ型の範囲を指定して、
-- 分かりやすい名前で再定義するものです。

subtype RAMWORD is std_logic_vector(15 downto 0);
type RAMARRY is array(0 to 262143) of RAMWORD;

signal  RAMDATA     :RAMARRY;
signal  ADR_IN      :integer range 0 to 17;
signal  dti         :std_logic_vector(15 downto 0);
signal  adr         :std_logic_vector(17 downto 0);
signal  wei         :std_logic;
signal  oetd        :std_logic;
signal  ubtd        :std_logic;

begin

    -- データ、アドレス、ライトコマンドと接続

            dti <= DOUTT;
            adr <="ADDRT;"
            wei <="WET;"


--DOUTT <= RAMDATA(ADR_IN) when (oetd ='0') else 'Z';

    -- integerに型変換
    ADR_IN <="CONV_INTEGER(adr);"

    -- ディレイパラメータです。
    oetd <="OET" after 4 ns;

    process (wei,oetd,dti) begin
    -- データをRAMにライト(Async RAM)
if(oetd='1')then
            if (wei'event and wei="1" ) then
                RAMDATA(ADR_IN) <="dti;"
            end if;
          DOUTT <= (others => 'Z');

    -- データからRAMをリード(Async RAM)
        else
                DOUTT <="RAMDATA(ADR_IN);"
        end if;
    end process;

end RAM;


レンタル掲示板
21件の内、新着の記事から10件ずつ表示します。

お知らせ · よくある質問(FAQ) · お問合せ窓口 · teacup.レンタル掲示板

© GMO Media, Inc.