std_logic_vectorのピンアサイン

このQ&Aのポイント
  • std_logic_vector (15 downto 0) の場合どのようなルールでピンアサインするのか教えてください。
  • Pin Plannerでピンアサインをしなくてもコンパイルは成功するようです。
  • a[15]にFitter Locationに表示されているピンを設定すると、コンパイルも成功します。
回答を見る
  • 締切済み

std_logic_vector のピンアサイン

cyclone ii ボード、Quartus ii 13.0sp1 です。 port ( a, b : in std_logic_vector (15 downto 0); としたとき (1)Pin Planner でピンアサインをしないで、コンパイルするとOKです。 (2)まずa[15]にFitter Location に表示されているピンを設定して、コンパイルするとOKです。    全てをFitter LocationのようにすればOKだと思うのですが、そうすると配線が整然としません。 そこで、自由に設定できるのかな(?)と思って どういうルールで設定するべきかもわからぬままに a[15]にいろいろなPIN_xを設定してみると (3)PIN_141ならばコンパイルはOKでした。 (4)PIN_1ならばコンパイルエラーでした。 std_logic_vector (15 downto 0) の場合どのようなルールでピンアサイン するのか教えてください。

みんなの回答

  • TIGANS
  • ベストアンサー率35% (244/680)
回答No.1

回答がつかないようなので。 FPGA開発環境ではいろいろと制約あるので専門のフォーラムで訪ねましょう。 https://forum.macnica.co.jp/c/altera 一番ありそうなのは、std_logic_vector (15 downto 0)のピン割当が IOバンク境界を跨いでいるのではないかということです。 FPGAではIOバンク毎に異なるIO電源電圧を設定できるので 同じ制約を持ったグループをコンパイルに先立ち予め定義しておかないと VHDLの素からのコンパイルのIOバンクまたぎは怒られるような気がします。

関連するQ&A

  • VHDLの書き方について

    教科書で signal a : std_logic_vector (3 downto 0); a <= (others => '0'); -- A というような書き方がありました。 この Aの意味は何なのでしょうか?

  • VHDLのvector

    VHDLにおいて「vector(5bitとします)の全bitが'0'である場合」という条件のif文を書く場合、if(Data = "00000") then と記述する以外に方法はありませんか? ここでは Data :in std_logic_vector(4 downto 0); としています。 5bitくらいならまだいいですが、16bitなどでもひたすら'0'を羅列するしかないのでしょうか?よろしくお願いします。

  • VHDLに関して

    複数ビットの信号を宣言する際に std_logic_vector を用いますが、その後のdowntoやtoの意味がよく分かりません。 下の画像だとdowntoですが、toでは何故ダメなのでしょうか? また、selはstd_logicでいいと思うのですが何故複数ビットの扱いなのでしょうか? すみませんが、初心者なのでできるだけ分かりやすく説明していただけると幸いです。 宜しくお願いします。

  • VHDL記述の回路設計「加算減算器」

    VHDL記述の回路を設計というかプログラミングをしたのですが、出力が正しくありませんでした。内容は「加算・減算器」です。今回はオーバーフローを(考えてもいいのですが)考えないことにします。 記述内容は以下のようになっています。P_A で加算と減算を切り替えています。問題のボードへの出力ですが、 X_A + X_B = L_A としています。 0000 0000 0000 0001 0000 0001 0010 0000 0010 0011 0000 0011 0100 0000 0100 … という風に X_A だけを 0 に統一した場合でも正しく出力されていますが、 0000 0001 0001 0001 0001 0000 0010 0001 0011 0011 0001 0010 0100 0001 0101 0101 0001 0100 … このように、ビット同士の和の繰り上がりがきいてない感じなんですね。これって下の記述が間違ってるんでしょうか。それとも、ボード出力時のピンの当て方が間違ってるんでしょうか。詳しい方、アドバイスよろしくお願いします。 library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity EX is port ( P_A : in std_logic; X_A : in std_logic_vector(3 downto 0); X_B : in std_logic_vector(3 downto 0); L_A : out std_logic_vector(3 downto 0) ); end EX; architecture STRUCTURE of EX is begin process ( X_A, X_B, P_A ) begin if P_A = '1' then L_A <= X_A + X_B; else L_A <= X_A - X_B; end if; end process; end STRUCTURE;

  • FPGA > ポート downtoを使う

    FPGAの勉強を始めています。 http://www.kumikomi.net/archives/2009/07/verilog_hdl_1.php 上記のサイトの「(2) エンティティ」のポート宣言の説明のところに port(a, b: in std_logic_vector (3 downto 0); ...略... ) のような部分の"downto"に関して 「downtoは,降順で範囲を指定する予約語です.昇順の場合toを 使います.実際の設計ではもっぱら降順を使います.」 とあります。 downtoをよく使う理由というのはあるのでしょうか?

  • Quartus 2 programmer 使い方

    以前 Quartus IIのタイミングシミュレーションについて質問させていただいたものです。 今簡単なVHDLコードをコンパイルして、ピンへの配置を行い、プログラマーを使ってCPLDをプログラムしようとしているのですが、programmer window でstart button を押しても Process: 欄が Failed になってプログラムできません。 VHDLのコンパイルと、pin planner によるピン配置はうまく出来たと思います。 詳しい方、どうか解決方法を教えてください。お願いします。 システムの情報は以下のとおりです。 computer: Windows XP home edition Quartus II version: 12.0 SP1 Web Edition device: MAX700S family, EPM7064SLC44-10 eveluation board: Northmicro NM201 Programmer での設定 hardware: ByteBlaster Server: Local Port: LPT1 JTAG setting tab: Local server, status OK ブレッドボード上にさした評価ボードの写真を添付してあります。

  • C++ vectorに配列をプッシュしたい

    C++のstd::vectorが格納する要素として配列を指定することはできますか vectorを使って2次元配列を表現したいときは,たとえば std::vecor<std::vector<int>> v; とすれば2次元配列が表現できますよね. 2次元配列の列方向の要素数が2で固定されていて,行方向の要素数が不確定のデータを扱いたいので,2次元配列を格納するvectorで扱えればなと思いました. (2個で1組のデータがたくさんあるということなので,vectorの2次元配列ではありません) std::vector<int[2]> v; int a[2]; a[1] = 1; a[0] = 2; v.push_back(a); という書き方ではコンパイルできなかったのですが,vectorに配列要素を格納させることはできないのでしょうか. あるいは,もし可能ならどのように書けばよいのでしょうか. 結局は1組のデータセットを構造体化してそれをvectorにプッシュするやり方に落ち着いたのですが,疑問に思ったままモヤモヤしているので質問させて頂きます. 「vector 配列」などのキーワードで検索してみましたが,vectorの動的配列としての紹介記事が多くヒットしてしまい,自分ではうまく情報を発見することはできませんでした. よろしくお願いします.

  • Verilogでメモリに初期値を記憶する方法

    VHDL言語で次のようにしてRAMエリアに初期値を記憶しましたが, Verilogで同じことをinitialで行おうとしてもうまくいきません。 どうすればよいかアドバイスを下さい。 type ram_type is array (0 to 3) of std_logic_vector (7 downto 0); -- RAM : 4 Byte signal RAM : ram_type:= ("00010010", "10010001","00001111","10001001");

  • カウントダウン VHDL記述に困っています。

    入力側には、4Bit入力データバス、Clock、Reset 出力側には、4Bit出力データバス のカウントダウン回路のVHDLの記述にトライしているのですが、シミュレーションを行うと、期待通りの動作が得られません。 イネーブルは入れません。 参考に下記に記述を記載します。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity CNT_DOWN is port(D_IN : in std_logic_vector(3 downto 0); CLK, RST : in std_logic; D_OUT : out std_logic_vector(3 downto 0) ); end CNT_DOWN; architecture RTL of CNT_DOWN is D_OUT_TMP <= D_OUT; begin process(RST,CLK) begin if(RST='0') then D_OUT_TMP<=(others=>'0'); elsif(CLK'event and CLK='1') then if(D_OUT_TMP=D_IN) then D_OUT_TMP <= D_OUT_TMP - '1'; end if; end if; end process; end RTL; なのですが、きちんと動きません。 アドバイス下さい。

  • vectorを引数として使いたいのですがエラーが出てしまいます

    vectorを引数として使いたいのですがエラーが出てしまいます 以下のようなコードでコンパイルでエラーが出てしまうのですがどうしたら良いでしょうか。 class car{ public: int tire; int engine; } というクラスを作ります。 main関数内で function(car a[]);//関数の宣言 int main(){ std::vector<car> car1(0);//car型のcar1を作成 std::vector<car>::reference car1rf=car1.front(); function(car1rf);//関数に代入 } function(car a[]){ car test; test.tire=1; a.push_back(test); } としてpush_backを外部関数で行いたいのですが、エラーが出てしまいます。 どうしたら良いでしょうか。