あなたが悪いのVHDLプログラムで私を助けてくれますか

N

nkarmstrong

Guest
皆さん、こんにちは、私のVHDLの初心者です、私の目標とvhldプログラムを書くです:
カウンタが0から255まで、このプロセスでは、オフになります信号"sigin"カウントハイまたはロー
(ただし、1ポイント)静止しているときは高回転、ランダム配列には
、 回を注記することカウンタ番号occers
カウンタが20回、その後
、 プログラムカウンタ番号の中で最も時間を得ると比較して行ってしまう。
プログラムは下記です:
例library ieee;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_ARITH.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
エンティティcountreeです
ポート(
クロック:std_logicで;
Ens:std_logicで;
Sigin:std_logicで;
距離:std_logic_vector(7 '1 0);
テンキー:std_logic_vector(4 '1 0);
MeuOk:アウトstd_logic
);
エンドcountree;
countreeであるアーキテクチャの行動

信号カウンタ:std_logic_vector(7 '1、0);
信号I:std_logic_vector(4 '1 0);
信号TemDis:std_logic_vector(7 '1、0);
TemNum信号:std_logic_vector(4 '1 0);
TemMeuOk信号:std_logic;
サブワードstd_logic_vector(4 '1 0);
のタイプのメモリアレイ(0〜255)の単語です。
信号:メモリ;

開始する
プロセス(Ens、私、Sigin、カウンタ)
開始する

場合(Ens = '0')し
私は"="00000";
TemDis"="00000000";
TemNum"="00000";
カウンタ"=(他人="'0');
TemMeuOk"= '0';

論文、0から255のループするために

(j)の"=(他人="'0');

最後のループ;

elsif(Ens = '1'とi"、"10100"とSigin = '1')し

場合
、 カウンタは

が"00000000"="(0)"=(0) '1';
が"00000001"="(1)"=(1) '1';
が"00000010"="(2)"=(2) '1';
ときに、"00000011"="(3)"=(3) '1';
ときに、"00000100"="(4)"=(4) '1';
ときに、"00000101"="(5)"=(5) '1';
ときに、"00000110"="(6)"=(6) '1';
ときに、"00000111"="(7)"=(7) '1';
ときに、"00001000"="(

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"00001001"="(9)"=(9) '1';
ときに、"00001010"="(10)"=(10) '1';
ときに、"00001011"="(11)"=(11) '1';
ときに、"00001100"="(12)"=(12) '1';
ときに、"00001101"="(13)"=(13) '1';
ときに、"00001110"="(14)"=(14) '1';
ときに、"00001111"="(15)"=(15) '1';
ときに、"00010000"="(16)"=(16) '1';
ときに、"00010001"="(17)"=(17) '1';
ときに、"00010010"="(1

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(1

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"00010011"="(19)"=(19) '1';
ときに、"00010100"="(20)"=(20) '1';
ときに、"00010101"="(21)"=(21) '1';
ときに、"00010110"="(22)"=(22) '1';
ときに、"00010111"="(23)"=(23) '1';
ときに、"00011000"="(24)"=(24) '1';
ときに、"00011001"="(25)"=(25) '1';
ときに、"00011010"="(26)"=(26) '1';
ときに、"00011011"="(27)"=(27) '1';
ときに、"00011100"="(2

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(2

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"00011101"="(29)"=(29) '1';
ときに、"00011110"="(30)"=(30) '1';
ときに、"00011111"="(31)"=(31) '1';
が"00100000"="(32)"=(32) '1';
ときに、"00100001"="(33)"=(33) '1';
ときに、"00100010"="(34)"=(34) '1';
ときに、"00100011"="(35)"=(35) '1';
ときに、"00100100"="(36)"=(36) '1';
ときに、"00100101"="(37)"=(37) '1';
ときに、"00100110"="(3

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(3

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"00100111"="(39)"=(39) '1';
ときに、"00101000"="(40)"=(40) '1';
ときに、"00101001"="(41)"=(41) '1';
ときに、"00101010"="(42)"=(42) '1';
ときに、"00101011"="(43)"=(43) '1';
ときに、"00101100"="(44)"=(44) '1';
ときに、"00101101"="(45)"=(45) '1';
ときに、"00101110"="(46)"=(46) '1';
ときに、"00101111"="(47)"=(47) '1';
ときに、"00110000"="(4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(4

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"00110001"="(49)"=(49) '1';
ときに、"00110010"="(50)"=(50) '1';
ときに、"00110011"="(51)"=(51) '1';
ときに、"00110100"="(52)"=(52) '1';
ときに、"00110101"="(53)"=(53) '1';
ときに、"00110110"="(54)"=(54) '1';
ときに、"00110111"="(55)"=(55) '1';
ときに、"00111000"="(56)"=(56) '1';
ときに、"00111001"="(57)"=(57) '1';
ときに、"00111010"="(5

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(5

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"00111011"="(59)"=(59) '1';
ときに、"00111100"="(60)"=(60) '1';
ときに、"00111101"="(61)"=(61) '1';
ときに、"00111110"="(62)"=(62) '1';
ときに、"00111111"="(63)"=(63) '1';
が"01000000"="(64)"=(64) '1';
ときに、"01000001"="(65)"=(65) '1';
ときに、"01000010"="(66)"=(66) '1';
ときに、"01000011"="(67)"=(67) '1';
ときに、"01000100"="(6

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(6

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"01000101"="(69)"=(69) '1';
ときに、"01000110"="(70)"=(70) '1';
ときに、"01000111"="(71)"=(71) '1';
ときに、"01001000"="(72)"=(72) '1';
ときに、"01001001"="(73)"=(73) '1';
ときに、"01001010"="(74)"=(74) '1';
ときに、"01001011"="(75)"=(75) '1';
ときに、"01001100"="(76)"=(76) '1';
ときに、"01001101"="(77)"=(77) '1';
ときに、"01001110"="(7

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(7

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"01001111"="(79)"=(79) '1';
が"01010000"="(80)"=(80) '1';
ときに、"01010001"="(81)"=(81) '1';
ときに、"01010010"="(82)"=(82) '1';
ときに、"01010011"="(83)"=(83) '1';
ときに、"01010100"="(84)"=(84) '1';
ときに、"01010101"="(85)"=(85) '1';
ときに、"01010110"="(86)"=(86) '1';
ときに、"01010111"="(87)"=(87) '1';
ときに、"01011000"="(8

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(8

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"01011001"="(89)"=(89) '1';
ときに、"01011010"="(90)"=(90) '1';
ときに、"01011011"="(91)"=(91) '1';
ときに、"01011100"="(92)"=(92) '1';
ときに、"01011101"="(93)"=(93) '1';
ときに、"01011110"="(94)"=(94) '1';
ときに、"01011111"="(95)"=(95) '1';
ときに、"01100000"="(96)"=(96) '1';
ときに、"01100001"="(97)"=(97) '1';
ときに、"01100010"="(9

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

"=(9

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

'1';
ときに、"01100011"="(99)"=(99) '1';
ときに、"01100100"="(100)"=(100) '1';
ときに、"01100101"="(101)"=(101) '1';
ときに、"01100110"="(102)"=(102) '1';
ときに、"01100111"="(103)"=(103) '1';
ときに、"01101000"="(104)"=(104) '1';
ときに、"01101001"="(105)"=(105) '1';
ときに、"01101010"="(106)"=(106) '1';
ときに、"01101011"="(107)"=(107) '1';
ときに、"01101100"="(108)"=(108) '1';
ときに、"01101101"="(109)"=(109) '1';
ときに、"01101110"="(110)"=(110) '1';
ときに、"01101111"="(111)"=(111) '1';
ときに、"01110000"="(112)"=(112) '1';
ときに、"01110001"="(113)"=(113) '1';
ときに、"01110010"="(114)"=(114) '1';
ときに、"01110011"="(115)"=(115) '1';
ときに、"01110100"="(116)"=(116) '1';
ときに、"01110101"="(117)"=(117) '1';
ときに、"01110110"="(118)"=(118) '1';
ときに、"01110111"="(119)"=(119) '1';
ときに、"01111000"="(120)"=(120) '1';
ときに、"01111001"="(121)"=(121) '1';
ときに、"01111010"="(122)"=(122) '1';
ときに、"01111011"="(123)"=(123) '1';
ときに、"01111100"="(124)"=(124) '1';
ときに、"01111101"="(125)"=(125) '1';
ときに、"01111110"="(126)"=(126) '1';
ときに、"01111111"="(127)"=(127) '1';
が"10000000"="(128)"=(128) '1';
ときに、"10000001"="(129)"=(129) '1';
ときに、"10000010"="(130)"=(130) '1';
ときに、"10000011"="(131)"=(131) '1';
ときに、"10000100"="(132)"=(132) '1';
ときに、"10000101"="(133)"=(133) '1';
ときに、"10000110"="(134)"=(134) '1';
ときに、"10000111"="(135)"=(135) '1';
ときに、"10001000"="(136)"=(136) '1';
ときに、"10001001"="(137)"=(137) '1';
が"10001010"="(138)"=(138) '1';
ときに、"10001011"="(139)"=(139) '1';
ときに、"10001100"="(140)"=(140) '1';
ときに、"10001101"="(141)"=(141) '1';
ときに、"10001110"="(142)"=(142) '1';
ときに、"10001111"="(143)"=(143) '1';
ときに、"10010000"="(144)"=(144) '1';
ときに、"10010001"="(145)"=(145) '1';
ときに、"10010010"="(146)"=(146) '1';
ときに、"10010011"="(147)"=(147) '1';
ときに、"10010100"="(148)"=(148) '1';
ときに、"10010101"="(149)"=(149) '1';
ときに、"10010110"="(150)"=(150) '1';
ときに、"10010111"="(151)"=(151) '1';
ときに、"10011000"="(152)"=(152) '1';
ときに、"10011001"="(153)"=(153) '1';
ときに、"10011010"="(154)"=(154) '1';
ときに、"10011011"="(155)"=(155) '1';
ときに、"10011100"="(156)"=(156) '1';
ときに、"10011101"="(157)"=(157) '1';
ときに、"10011110"="(158)"=(158) '1';
ときに、"10011111"="(159)"=(159) '1';
ときに、"10100000"="(160)"=(160) '1';
ときに、"10100001"="(161)"=(161) '1';
ときに、"10100010"="(162)"=(162) '1';
ときに、"10100011"="(163)"=(163) '1';
ときに、"10100100"="(164)"=(164) '1';
ときに、"10100101"="(165)"=(165) '1';
ときに、"10100110"="(166)"=(166) '1';
ときに、"10100111"="(167)"=(167) '1';
ときに、"10101000"="(168)"=(168) '1';
ときに、"10101001"="(169)"=(169) '1';
ときに、"10101010"="(170)"=(170) '1';
ときに、"10101011"="(171)"=(171) '1';
ときに、"10101100"="(172)"=(172) '1';
ときに、"10101101"="(173)"=(173) '1';
ときに、"10101110"="(174)"=(174) '1';
ときに、"10101111"="(175)"=(175) '1';
ときに、"10110000"="(176)"=(176) '1';
ときに、"10110001"="(177)"=(177) '1';
ときに、"10110010"="(178)"=(178) '1';
ときに、"10110011"="(179)"=(179) '1';
ときに、"10110100"="(180)"=(180) '1';
ときに、"10110101"="(181)"=(181) '1';
ときに、"10110110"="(182)"=(182) '1';
ときに、"10110111"="(183)"=(183) '1';
ときに、"10111000"="(184)"=(184) '1';
ときに、"10111001"="(185)"=(185) '1';
ときに、"10111010"="(186)"=(186) '1';
ときに、"10111011"="(187)"=(187) '1';
ときに、"10111100"="(188)"=(188) '1';
ときに、"10111101"="(189)"=(189) '1';
ときに、"10111110"="(190)"=(190) '1';
ときに、"10111111"="(191)"=(191) '1';
ときに、"11000000"="(192)"=(192) '1';
ときに、"11000001"="(193)"=(193) '1';
ときに、"11000010"="(194)"=(194) '1';
ときに、"11000011"="(195)"=(195) '1';
ときに、"11000100"="(196)"=(196) '1';
ときに、"11000101"="(197)"=(197) '1';
ときに、"11000110"="(198)"=(198) '1';
ときに、"11000111"="(199)"=(199) '1';
ときに、"11001000"="(200)"=(200) '1';
ときに、"11001001"="(201)"=(201) '1';
ときに、"11001010"="(202)"=(202) '1';
ときに、"11001011"="(203)"=(203) '1';
ときに、"11001100"="(204)"=(204) '1';
ときに、"11001101"="(205)"=(205) '1';
ときに、"11001110"="(206)"=(206) '1';
ときに、"11001111"="(207)"=(207) '1';
ときに、"11010000"="(208)"=(208) '1';
ときに、"11010001"="(209)"=(209) '1';
ときに、"11010010"="(210)"=(210) '1';
ときに、"11010011"="(211)"=(211) '1';
ときに、"11010100"="(212)"=(212) '1';
ときに、"11010101"="(213)"=(213) '1';
ときに、"11010110"="(214)"=(214) '1';
ときに、"11010111"="(215)"=(215) '1';
ときに、"11011000"="(216)"=(216) '1';
ときに、"11011001"="(217)"=(217) '1';
ときに、"11011010"="(218)"=(218) '1';
ときに、"11011011"="(219)"=(219) '1';
ときに、"11011100"="(220)"=(220) '1';
ときに、"11011101"="(221)"=(221) '1';
ときに、"11011110"="(222)"=(222) '1';
ときに、"11011111"="(223)"=(223) '1';
ときに、"11100000"="(224)"=(224) '1';
ときに、"11100001"="(225)"=(225) '1';
ときに、"11100010"="(226)"=(226) '1';
ときに、"11100011"="(227)"=(227) '1';
ときに、"11100100"="(228)"=(228) '1';
ときに、"11100101"="(229)"=(229) '1';
ときに、"11100110"="(230)"=(230) '1';
ときに、"11100111"="(231)"=(231) '1';
ときに、"11101000"="(232)"=(232) '1';
ときに、"11101001"="(233)"=(233) '1';
ときに、"11101010"="(234)"=(234) '1';
ときに、"11101011"="(235)"=(235) '1';
ときに、"11101100"="(236)"=(236) '1';
ときに、"11101101"="(237)"=(237) '1';
ときに、"11101110"="(238)"=(238) '1';
ときに、"11101111"="(239)"=(239) '1';
ときに、"11110000"="(240)"=(240) '1';
ときに、"11110001"="(241)"=(241) '1';
ときに、"11110010"="(242)"=(242) '1';
ときに、"11110011"="(243)"=(243) '1';
ときに、"11110100"="(244)"=(244) '1';
ときに、"11110101"="(245)"=(245) '1';
ときに、"11110110"="(246)"=(246) '1';
ときに、"11110111"="(247)"=(247) '1';
ときに、"11111000"="(248)"=(248) '1';
ときに、"11111001"="(249)"=(249) '1';
ときに、"11111010"="(250)"=(250) '1';
ときに、"11111011"="(251)"=(251) '1';
ときに、"11111100"="(252)"=(252) '1';
ときに、"11111101"="(253)"=(253) '1';
ときに、"11111110"="(254)"=(254) '1';
が"11111111"="(255)"=(255) '1';
他人="(0)"=(0) '1';

終了の場合;

終了の場合;

工程;

プロセス(私は、Ens)
開始する

場合(Ens = '1')し

場合、(私="10100")を

論文、0から255のループするために

場合(TemNum"(j)の)して

TemDis"= conv_std_logic_vector(論文、

<img src=¥"http://www.edaboard.com/images/smiles/icon_cool.gif¥" alt=¥"涼しい¥" border=¥"0¥" />

;
TemNum"=(j)の;

その他の

TemDis"= TemDis;
TemNum"= TemNum;

終了の場合;

最後のループ;

TemMeuOk"= '1';

終了の場合;

終了の場合;

工程;

プロセス(クロック、Ens、カウンタ)
開始する

場合(Ens = '1')し

場合(clock'eventとクロック= '1')し

場合(カウンタ="11111111")して

カウンタ"=(他人="'0');
私"=私 '1';

elsif(カウンタ""11111111")して

カウンタ"=カウンタ '1';

終了の場合;

終了の場合;

終了の場合;

工程;

距離"= TemDis;
テンキーの"= TemNum;
MeuOk"= TemMeuOk;最後の行動;
私はXSTの伊勢7.1bは、252の警告が見つかりました5などが発生したビットの信号をラッチ<a_10>を使用し、それは私"『私は信号が使われていない
、 または割り当てられて知るように、
私は
、 なぜか分からない。
あなたのアドバイスは非常にありがとうございます。

 
やあ、
からでも私はウルのコードを修正してウルメールからundestood ...
次のコードを修正することはできませんが
、 それはあなたのアイデアを与える
どのようにVHDLでコーディングを行う。VHDLのハードウェアが一つの記憶
記述言語、だから最初のハードウェアとそのためのVHDLを使用すると思う
だけでは
、 ハードウェアを記述する!

ホープ
、 このことができます!コード:

例library ieee;

IEEE.STD_LOGIC_1164.allを使用します。

IEEE.STD_LOGIC_ARITH.allを使用します。

IEEE.STD_LOGIC_UNSIGNED.allを使用します。

エンティティcountreeです

ポート(

クロック:std_logicで;

Ens:std_logicで;

Sigin:std_logicで;

距離:std_logic_vector(7 '1 0);

テンキー:std_logic_vector(4 '1 0);

MeuOk:アウトstd_logic

);

エンドcountree;

countreeであるアーキテクチャの行動信号カウンタ:std_logic_vector(7 '1、0);

信号I:std_logic_vector(4 '1 0);

信号TemDis:std_logic_vector(7 '1、0);

TemNum信号:std_logic_vector(4 '1 0);

TemMeuOk信号:std_logic;

サブワードstd_logic_vector(4 '1 0);

のタイプのメモリアレイ(0〜255)の単語です。

信号:メモリ;

開始する

-配列のカウンタ

-ここに私はSiginクロックと同期であると仮定

プロセス(クロック、Ens)

開始する

場合(Ens = '0')し

論文、0から255のループするために

(j)の"=(他人="'0');

最後のループ;

elsif(clock'eventとクロック= '1')し

場合、(私は""10100"とSigin = '1')し

-これは大きなcase文を修正する必要がある!

-私たちはここではメモリを使用することができます

場合、カウンタは

が"00000000"="(0)"=(0) '1';

が"00000001"="(1)"=(1) '1';

が"00000010"="(2)"=(2) '1';

ときに、"00000011"="(3)"=(3) '1';

ときに、"00000100"="(4)"=(4) '1';

ときに、"00000101"="(5)"=(5) '1';

ときに、"00000110"="(6)"=(6) '1';

ときに、"00000111"="(7)"=(7) '1';

ときに、"00001000"="(8)"=(8) '1';

ときに、"00001001"="(9)"=(9) '1';

ときに、"00001010"="(10)"=(10) '1';

ときに、"00001011"="(11)"=(11) '1';

ときに、"00001100"="(12)"=(12) '1';

ときに、"00001101"="(13)"=(13) '1';

ときに、"00001110"="(14)"=(14) '1';

ときに、"00001111"="(15)"=(15) '1';

ときに、"00010000"="(16)"=(16) '1';

ときに、"00010001"="(17)"=(17) '1';

ときに、"00010010"="(18)"=(18) '1';

ときに、"00010011"="(19)"=(19) '1';

ときに、"00010100"="(20)"=(20) '1';

ときに、"00010101"="(21)"=(21) '1';

ときに、"00010110"="(22)"=(22) '1';

ときに、"00010111"="(23)"=(23) '1';

ときに、"00011000"="(24)"=(24) '1';

ときに、"00011001"="(25)"=(25) '1';

ときに、"00011010"="(26)"=(26) '1';

ときに、"00011011"="(27)"=(27) '1';

ときに、"00011100"="(28)"=(28) '1';

ときに、"00011101"="(29)"=(29) '1';

ときに、"00011110"="(30)"=(30) '1';

ときに、"00011111"="(31)"=(31) '1';

が"00100000"="(32)"=(32) '1';

ときに、"00100001"="(33)"=(33) '1';

ときに、"00100010"="(34)"=(34) '1';

ときに、"00100011"="(35)"=(35) '1';

ときに、"00100100"="(36)"=(36) '1';

ときに、"00100101"="(37)"=(37) '1';

ときに、"00100110"="(38)"=(38) '1';

ときに、"00100111"="(39)"=(39) '1';

ときに、"00101000"="(40)"=(40) '1';

ときに、"00101001"="(41)"=(41) '1';

ときに、"00101010"="(42)"=(42) '1';

ときに、"00101011"="(43)"=(43) '1';

ときに、"00101100"="(44)"=(44) '1';

ときに、"00101101"="(45)"=(45) '1';

ときに、"00101110"="(46)"=(46) '1';

ときに、"00101111"="(47)"=(47) '1';

ときに、"00110000"="(48)"=(48) '1';

ときに、"00110001"="(49)"=(49) '1';

ときに、"00110010"="(50)"=(50) '1';

ときに、"00110011"="(51)"=(51) '1';

ときに、"00110100"="(52)"=(52) '1';

ときに、"00110101"="(53)"=(53) '1';

ときに、"00110110"="(54)"=(54) '1';

ときに、"00110111"="(55)"=(55) '1';

ときに、"00111000"="(56)"=(56) '1';

ときに、"00111001"="(57)"=(57) '1';

ときに、"00111010"="(58)"=(58) '1';

ときに、"00111011"="(59)"=(59) '1';

ときに、"00111100"="(60)"=(60) '1';

ときに、"00111101"="(61)"=(61) '1';

ときに、"00111110"="(62)"=(62) '1';

ときに、"00111111"="(63)"=(63) '1';

が"01000000"="(64)"=(64) '1';

ときに、"01000001"="(65)"=(65) '1';

ときに、"01000010"="(66)"=(66) '1';

ときに、"01000011"="(67)"=(67) '1';

ときに、"01000100"="(68)"=(68) '1';

ときに、"01000101"="(69)"=(69) '1';

ときに、"01000110"="(70)"=(70) '1';

ときに、"01000111"="(71)"=(71) '1';

ときに、"01001000"="(72)"=(72) '1';

ときに、"01001001"="(73)"=(73) '1';

ときに、"01001010"="(74)"=(74) '1';

ときに、"01001011"="(75)"=(75) '1';

ときに、"01001100"="(76)"=(76) '1';

ときに、"01001101"="(77)"=(77) '1';

ときに、"01001110"="(78)"=(78) '1';

ときに、"01001111"="(79)"=(79) '1';

が"01010000"="(80)"=(80) '1';

ときに、"01010001"="(81)"=(81) '1';

ときに、"01010010"="(82)"=(82) '1';

ときに、"01010011"="(83)"=(83) '1';

ときに、"01010100"="(84)"=(84) '1';

ときに、"01010101"="(85)"=(85) '1';

ときに、"01010110"="(86)"=(86) '1';

ときに、"01010111"="(87)"=(87) '1';

ときに、"01011000"="(88)"=(88) '1';

ときに、"01011001"="(89)"=(89) '1';

ときに、"01011010"="(90)"=(90) '1';

ときに、"01011011"="(91)"=(91) '1';

ときに、"01011100"="(92)"=(92) '1';

ときに、"01011101"="(93)"=(93) '1';

ときに、"01011110"="(94)"=(94) '1';

ときに、"01011111"="(95)"=(95) '1';

ときに、"01100000"="(96)"=(96) '1';

ときに、"01100001"="(97)"=(97) '1';

ときに、"01100010"="(98)"=(98) '1';

ときに、"01100011"="(99)"=(99) '1';

ときに、"01100100"="(100)"=(100) '1';

ときに、"01100101"="(101)"=(101) '1';

ときに、"01100110"="(102)"=(102) '1';

ときに、"01100111"="(103)"=(103) '1';

ときに、"01101000"="(104)"=(104) '1';

ときに、"01101001"="(105)"=(105) '1';

ときに、"01101010"="(106)"=(106) '1';

ときに、"01101011"="(107)"=(107) '1';

ときに、"01101100"="(108)"=(108) '1';

ときに、"01101101"="(109)"=(109) '1';

ときに、"01101110"="(110)"=(110) '1';

ときに、"01101111"="(111)"=(111) '1';

ときに、"01110000"="(112)"=(112) '1';

ときに、"01110001"="(113)"=(113) '1';

ときに、"01110010"="(114)"=(114) '1';

ときに、"01110011"="(115)"=(115) '1';

ときに、"01110100"="(116)"=(116) '1';

ときに、"01110101"="(117)"=(117) '1';

ときに、"01110110"="(118)"=(118) '1';

ときに、"01110111"="(119)"=(119) '1';

ときに、"01111000"="(120)"=(120) '1';

ときに、"01111001"="(121)"=(121) '1';

ときに、"01111010"="(122)"=(122) '1';

ときに、"01111011"="(123)"=(123) '1';

ときに、"01111100"="(124)"=(124) '1';

ときに、"01111101"="(125)"=(125) '1';

ときに、"01111110"="(126)"=(126) '1';

ときに、"01111111"="(127)"=(127) '1';

が"10000000"="(128)"=(128) '1';

ときに、"10000001"="(129)"=(129) '1';

ときに、"10000010"="(130)"=(130) '1';

ときに、"10000011"="(131)"=(131) '1';

ときに、"10000100"="(132)"=(132) '1';

ときに、"10000101"="(133)"=(133) '1';

ときに、"10000110"="(134)"=(134) '1';

ときに、"10000111"="(135)"=(135) '1';

ときに、"10001000"="(136)"=(136) '1';

ときに、"10001001"="(137)"=(137) '1';

が"10001010"="(138)"=(138) '1';

ときに、"10001011"="(139)"=(139) '1';

ときに、"10001100"="(140)"=(140) '1';

ときに、"10001101"="(141)"=(141) '1';

ときに、"10001110"="(142)"=(142) '1';

ときに、"10001111"="(143)"=(143) '1';

ときに、"10010000"="(144)"=(144) '1';

ときに、"10010001"="(145)"=(145) '1';

ときに、"10010010"="(146)"=(146) '1';

ときに、"10010011"="(147)"=(147) '1';

ときに、"10010100"="(148)"=(148) '1';

ときに、"10010101"="(149)"=(149) '1';

ときに、"10010110"="(150)"=(150) '1';

ときに、"10010111"="(151)"=(151) '1';

ときに、"10011000"="(152)"=(152) '1';

ときに、"10011001"="(153)"=(153) '1';

ときに、"10011010"="(154)"=(154) '1';

ときに、"10011011"="(155)"=(155) '1';

ときに、"10011100"="(156)"=(156) '1';

ときに、"10011101"="(157)"=(157) '1';

ときに、"10011110"="(158)"=(158) '1';

ときに、"10011111"="(159)"=(159) '1';

ときに、"10100000"="(160)"=(160) '1';

ときに、"10100001"="(161)"=(161) '1';

ときに、"10100010"="(162)"=(162) '1';

ときに、"10100011"="(163)"=(163) '1';

ときに、"10100100"="(164)"=(164) '1';

ときに、"10100101"="(165)"=(165) '1';

ときに、"10100110"="(166)"=(166) '1';

ときに、"10100111"="(167)"=(167) '1';

ときに、"10101000"="(168)"=(168) '1';

ときに、"10101001"="(169)"=(169) '1';

ときに、"10101010"="(170)"=(170) '1';

ときに、"10101011"="(171)"=(171) '1';

ときに、"10101100"="(172)"=(172) '1';

ときに、"10101101"="(173)"=(173) '1';

ときに、"10101110"="(174)"=(174) '1';

ときに、"10101111"="(175)"=(175) '1';

ときに、"10110000"="(176)"=(176) '1';

ときに、"10110001"="(177)"=(177) '1';

ときに、"10110010"="(178)"=(178) '1';

ときに、"10110011"="(179)"=(179) '1';

ときに、"10110100"="(180)"=(180) '1';

ときに、"10110101"="(181)"=(181) '1';

ときに、"10110110"="(182)"=(182) '1';

when "10110111" => a(183) <= a(183) '1';
ときに、"10111000"="(184)"=(184) '1';

ときに、"10111001"="(185)"=(185) '1';

ときに、"10111010"="(186)"=(186) '1';

ときに、"10111011"="(187)"=(187) '1';

ときに、"10111100"="(188)"=(188) '1';

ときに、"10111101"="(189)"=(189) '1';

ときに、"10111110"="(190)"=(190) '1';

ときに、"10111111"="(191)"=(191) '1';

ときに、"11000000"="(192)"=(192) '1';

ときに、"11000001"="(193)"=(193) '1';

ときに、"11000010"="(194)"=(194) '1';

ときに、"11000011"="(195)"=(195) '1';

ときに、"11000100"="(196)"=(196) '1';

ときに、"11000101"="(197)"=(197) '1';

ときに、"11000110"="(198)"=(198) '1';

ときに、"11000111"="(199)"=(199) '1';

ときに、"11001000"="(200)"=(200) '1';

ときに、"11001001"="(201)"=(201) '1';

ときに、"11001010"="(202)"=(202) '1';

ときに、"11001011"="(203)"=(203) '1';

ときに、"11001100"="(204)"=(204) '1';

ときに、"11001101"="(205)"=(205) '1';

ときに、"11001110"="(206)"=(206) '1';

ときに、"11001111"="(207)"=(207) '1';

ときに、"11010000"="(208)"=(208) '1';

ときに、"11010001"="(209)"=(209) '1';

ときに、"11010010"="(210)"=(210) '1';

ときに、"11010011"="(211)"=(211) '1';

ときに、"11010100"="(212)"=(212) '1';

ときに、"11010101"="(213)"=(213) '1';

ときに、"11010110"="(214)"=(214) '1';

ときに、"11010111"="(215)"=(215) '1';

ときに、"11011000"="(216)"=(216) '1';

ときに、"11011001"="(217)"=(217) '1';

ときに、"11011010"="(218)"=(218) '1';

ときに、"11011011"="(219)"=(219) '1';

ときに、"11011100"="(220)"=(220) '1';

ときに、"11011101"="(221)"=(221) '1';

ときに、"11011110"="(222)"=(222) '1';

ときに、"11011111"="(223)"=(223) '1';

ときに、"11100000"="(224)"=(224) '1';

ときに、"11100001"="(225)"=(225) '1';

ときに、"11100010"="(226)"=(226) '1';

ときに、"11100011"="(227)"=(227) '1';

ときに、"11100100"="(228)"=(228) '1';

ときに、"11100101"="(229)"=(229) '1';

ときに、"11100110"="(230)"=(230) '1';

ときに、"11100111"="(231)"=(231) '1';

ときに、"11101000"="(232)"=(232) '1';

ときに、"11101001"="(233)"=(233) '1';

ときに、"11101010"="(234)"=(234) '1';

ときに、"11101011"="(235)"=(235) '1';

ときに、"11101100"="(236)"=(236) '1';

ときに、"11101101"="(237)"=(237) '1';

ときに、"11101110"="(238)"=(238) '1';

ときに、"11101111"="(239)"=(239) '1';

ときに、"11110000"="(240)"=(240) '1';

ときに、"11110001"="(241)"=(241) '1';

ときに、"11110010"="(242)"=(242) '1';

ときに、"11110011"="(243)"=(243) '1';

ときに、"11110100"="(244)"=(244) '1';

ときに、"11110101"="(245)"=(245) '1';

ときに、"11110110"="(246)"=(246) '1';

ときに、"11110111"="(247)"=(247) '1';

ときに、"11111000"="(248)"=(248) '1';

ときに、"11111001"="(249)"=(249) '1';

ときに、"11111010"="(250)"=(250) '1';

ときに、"11111011"="(251)"=(251) '1';

ときに、"11111100"="(252)"=(252) '1';

ときに、"11111101"="(253)"=(253) '1';

ときに、"11111110"="(254)"=(254) '1';

が"11111111"="(255)"=(255) '1';

他人="(0)"=(0) '1';

終了の場合;

終了の場合;

終了の場合;

工程;-------------------------------------------------- ---------------------------

-このプロセスは、最大カウント値と、その位置を見つけることです

-配列カウンタ!
これは、メインカウンタオーバーフローが20回行われます!

最大カウントし、カウンタを配列内のその位置-計算256クロックかかる

-サイクルです。

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

プロセス(クロック、Ens)

開始する

場合(Ens = '0')し

TemDis"="00000000";

TemNum"="00000";

TemMeuOk"= '0';

elsif clock'eventとクロック= '1'を

場合、(私="10100"とカウンタ="00000000")して

TemDis"="00000000";

TemNum"=(0);

TemMeuOk"= '0';

elsif(私="10100")を

場合(TemNum"(conv_integer(カウンタ)))して

TemDis"=カウンタ;

TemNum"=(conv_integer(カウンタ));

終了の場合;

この場合、カウンタ="11111111"を

TemMeuOk"= '1';

終了の場合;

終了の場合;

終了の場合;

工程;

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

-マスターカウンタ

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

プロセス(クロック、Ens、カウンタ)

開始する

場合(Ens = '0')し

私は"="00000";

カウンタ"=(他人="'0');

elsif clock'eventとクロック= '1'を

カウンタ"=カウンタ '1';

場合(カウンタ="11111111")して

私"=私 '1';

終了の場合;

終了の場合;

工程;距離"= TemDis;

テンキーの"= TemNum;

MeuOk"= TemMeuOk;

最後の行動;
 
私はVHDLシミュレータを知らないが、それは大量のコードのように思える!私は完全にお客様の要件を理解していないんだけど、とにかくこの小さなVerilogのものが立っている。ホープには少しのに役立ちます。午前4時土曜日の朝に他に何があるか?

<img src=¥"http://www.edaboard.com/images/smiles/icon_wink.gif¥" alt=¥"ウインク¥" border=¥"0¥" />そこからカウントを0から255まで20回。

goes high, it increments the corresponding bin
.

たび sigin
高が増加に対応する binに
なります。継続的には、bin、および
、 そのヒット数は
、 最もヒットしたことを伝えますを出力します。それは、Virtex IIの小さなコーナーを占めており、200 MHzのだ。

コード:

モジュールの上部(clk、sigin、fullest_bin_addr、fullest_bin_data);

整数n;

入力CLK、sigin; / /合成属性の期間clk"5nsの";

登録番号sigin1 = 0、current_blip = 0、next_blip = 0;

[7:0]カウント登録番号= 0、current_bin_addr = 0、next_bin_addr = 0;

登録番号[4:0]ループ= 20、ビン[0:255]、current_bin_data = 0、0 next_bin_data;

出力登録番号[7:0] fullest_bin_addr = 0;

出力登録番号[4:0] fullest_bin_data = 0;最初の開始

(n = 0の、nは"256で、nは= n 1)を用

binに[n]は= 0;

終わり常に(posedge CLK)の開始@

sigin1"= sigin;

current_blip"= sigin&&〜sigin1&&(ループ"、0); / /検出の立ち上がりエッジ

current_bin_data"=ビンを[count; / /現在の値は、パイプラインのRAMブロックを推論する]

current_bin_addr"=カウント;

next_blip"= current_blip;

next_bin_data"= current_bin_data 1; / /現在の値 1

next_bin_addr"= current_bin_addr;

場合(next_blip)を開始

binに[next_bin_addr]"= next_bin_data; / /インクリメント値を書き込む

場合(next_bin_data"fullest_bin_data)を開始

fullest_bin_addr"= next_bin_addr; / /ピークを覚えて

fullest_bin_data"= next_bin_data;

終わり

終わり

カウント"=カウント (ループ"、0);

ループ"=ループ- (カウント== 255);

終わり

endmodule
 
非常に多くのご支援、ごnand_gatesしていただきありがとうございます、あなたは私のためのコードを修正し
、すでに、ise7.1bのXSTを渡し
、 ご協力の下、私は、VHDLの詳細については知っている
私it.I使用Spartan3のハード、ロジック使用率を下回っている作業に行く
たぶん私のコードをstytleを変更するか
、 またはデバイスの利用を減らすため
、 他の方法を使用します。
そしてそれは非常にあなたのようなものはこの、echo47ば、私のverilog少し知って、私を見つける
いくつかのverilog本を最初に、感謝のコードを理解する〜
申¥し訳ありませんが、あなたがこの添付ファイルを表¥示するにはログインが必要

 
あなたが私の今朝frends.Andに感謝、私XSTのecho47さんのverilogプログラムは、本当に少ないリソ¥ースを占有すると、レポートが、1ブラムを使用した場合は、FPGA内のブロックRAMを使用するとして私は知っている場合
、 そのモジュールを使用する必要がありますあなたのコードは、なぜこの
任意のブロックラムなしでコードは1つのブロックRAMを合成することができます使用されるモジュールは?追加9分後:現在、VHDLコードは以下のであり、それも掲載し、これをブロックラムの合成はできませんが報告さ?

例library ieee;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_ARITH.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;

----コメントを解除し
、 次のライブラリの宣言の場合をインスタンス化する
----このコード内の任意のザイリンクスプリミティブ。
ライブラリUNISIM;
UNISIM.VComponents.allを使用します。

エンティティcountree1です
ポート(
Clk:std_logicで;
Sigin:std_logicで;
Ens:std_logicで;
MeuOK:アウトstd_logic;
FinData:std_logic_vector(4 '1 0);
FinAdr:std_logic_vector(7 '1 0アウト)
);
エンドcountree1;

アーキテクチャの行動countree1です

信号数:std_logic_vector(7 '1、0);
current_bin_address信号:std_logic_vector(7 '1、0);
next_bin_address信号:std_logic_vector(7 '1、0);
信号のループ:std_logic_vector(4 '1 0);
信号current_bin_data:std_logic_vector(4 '1 0);
信号next_bin_data:std_logic_vector(4 '1 0);
サブワードstd_logic_vector(4 '1 0);
のタイプのメモリアレイ(0〜255)の単語です。
信号ビン:メモリ;
TemFinData信号:std_logic_vector(4 '1 0);
信号TemFinAdr:std_logic_vector(7 '1、0);
開始する
プロセス(Ensは、Clk)
開始する

場合(Ens = '0')し

current_bin_address"=(他人="'0');
current_bin_data"=(他人="'0');
next_bin_address"=(他人="'0');
next_bin_data"=(他人="'0');
TemFinData"=(他人="'0');
TemFinAdr"=(他人="'0');

論文、0から255のループするために

ビン(j)の"=(他人="'0');

最後のループ;

elsif(Clk'eventとCLK = '1')しcurrent_bin_data"=ビン(conv_integer(カウント));
current_bin_address"=カウント;
next_bin_data"= current_bin_data '1';
next_bin_address"= current_bin_address;
の場合(ループ"、"10100"とSigin = '1')し
ビン(conv_integer())next_bin_address"= next_bin_data;

場合(next_bin_data"TemFinData)して

TemFinData"= next_bin_data;
TemFinAdr"= next_bin_address;

終了の場合;

終了の場合;

終了の場合;

工程;
プロセス(Clk、Ens)
開始する

場合(Ens = '0')し

ループ"="00000";
カウント"=(他人="'0');
MeuOK"= '0';

elsif(Clk'eventとCLK = '1')し

カウント"=カウント '1';

場合(カウント="11111111"とループ"、"10100")を

ループ"=ループ '1';

elsif(="カウント11111111"とループ="10100")を

MeuOK"= '1';

終了の場合;
終了の場合;
工程;

FinData"= TemFinData;
FinAdr"= TemFinAdr;

最後の行動;
[/テックス]
申¥し訳ありませんが、あなたがこの添付ファイルを表¥示するにはログインが必要

 
nkarmstrong書き込み:

しかし、場合は、FPGA内のブロックRAMを使用するとして私は知っている、あなたのコードでは、なぜ、任意のブロックラムせずに、このコードは1つのブロックRAMを合成することができます使用されるモジュールは、そのモジュールを使用するか?
 
非常にご返信いただきありがとうございます、多分私の"bin"の定義に間違いを犯す
報告書によれば:
* 1280 -信号のビットのレジスタが見つかりました<bin>。
*情報:XSTで:738 - HDLのアドバイザ- 1280フリップフロップ信号を推論された<bin>。You may be trying to describe a RAM in a way that is incompatible with block and distributed RAM resources available on Xilinx devices, or with a specific template that is not supported. Please review the Xilinx resources documentation and the XST user manual for coding guidelines. Taking advantage of RAM resources will lead to improved device usage and reduced synthesis time. 要約:

 
I see one problem. You are trying to zero the entire RAM when Ens goes low. You can't do that in an FPGA RAM. The RAM is automatically initialized to zero upon start-up. In my Verilog code, that "initial" loop runs only during simulation.

If you want to rerun the whole operation multiple times, then don't try to clear the RAM. Instead, modify the algorithm so during the first 0..255 cycle it ignores the original value, and writes the appropriate value into it.

I juggled a few things. Sorry I don't speak VHDL: コード:

module top(clk, sigin, fullest_bin_addr, fullest_bin_data);
parameter         cycles = 20;
input             clk, sigin;     // synthesis attribute period clk "5ns";
reg               sigin1=0, blip, first_cycle;
reg         [7:0] count=0, current_bin_addr, next_bin_addr;
reg         [4:0] cycle=0, bin[0:255], current_bin_data, next_bin_data;
output reg  [7:0] fullest_bin_addr=0;
output reg  [4:0] fullest_bin_data=0;

常に(posedge CLK)の開始@

sigin1 <= sigin;
blip <= sigin && ‾sigin1 && (cycle != cycles);  // detect rising edge
current_bin_data <= bin[count];                 // current value, pipeline to infer block RAM
current_bin_addr <= count;
first_cycle <= (cycle == 0);
next_bin_data <= (first_cycle ? 0 : current_bin_data) blip;
next_bin_addr <= current_bin_addr;
bin[next_bin_addr] <= next_bin_data;            // write incremented value
if (next_bin_data > fullest_bin_data) begin
fullest_bin_addr <= next_bin_addr;            // remember the peak
fullest_bin_data <= next_bin_data;
終わり

count <= count (cycle != cycles);
cycle <= cycle (count == 255);
終わり

endmodule
 
thank you for your reply,and i think maybe when it synthesizes,it will find the corresponding signal as we,clk,ramdata,ramaddress for a block ram,
but after i delete the initial data of the ram,it still can't synthesize a block ram
maybe there is still anyting wrong.
and i think in your verilog programme," next_bin_data <= current_bin_data 1; "
this statment occers at every rising edg of the Clk,can it cause some logic problems?
 
It's fine to do next_bin_data <= current_bin_data 1
continuously, becasuse next_bin_data
is later used inside an "if" block.

Standby a moment -- I'm trying to learn VHDL.

-------- A few hours later --------&@^@*#$@#$*&*!!!

Ok I learned it. Sort-of. But now my brain hurts. Who created this language, a committee of madmen?

This works the same as my Verilog (probably has the same bugs): コード:

例library ieee;

use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.all;

entity top is
generic (cycles : integer := 20);
port (clk              : in std_logic;
sigin            : in std_logic;
fullest_bin_addr : out std_logic_vector(7 downto 0);
fullest_bin_data : out std_logic_vector(4 downto 0));
attribute period : string;
attribute period of clk : signal is "6.0 ns";
end top;

architecture behave of top is
type mem_type is array (255 downto 0) of std_logic_vector (4 downto 0);
signal sigin1           : std_logic := '0';
signal blip             : std_logic_vector(0 downto 0) := "0";
signal first_cycle      : std_logic_vector(0 downto 0) := "0";
signal count            : std_logic_vector(7 downto 0) := "00000000";
signal cycle            : std_logic_vector(4 downto 0) := "00000";
signal current_bin_addr : std_logic_vector(7 downto 0) := "00000000";
signal current_bin_data : std_logic_vector(4 downto 0) := "00000";
signal next_bin_addr    : std_logic_vector(7 downto 0) := "00000000";
signal next_bin_data    : std_logic_vector(4 downto 0) := "00000";
signal bin              : mem_type;
signal full_bin_addr    : std_logic_vector(7 downto 0) := "00000000";
signal full_bin_data    : std_logic_vector(4 downto 0) := "00000";
開始する

process (clk) begin
if (clk'event and clk='1') then
sigin1 <= sigin;
if (sigin = '1' and sigin1 = '0' and cycle /= cycles) then  -- detect rising edge
blip <= "1";
その他の

blip <= "0";
終了の場合;

current_bin_data <= bin(conv_integer(count));  -- current value, pipeline to infer block RAM
current_bin_addr <= count;
if (cycle = 0) then
first_cycle <= "1";
その他の

first_cycle <= "0";
終了の場合;

if (first_cycle = "1") then
next_bin_data <= ("0000" & blip);
その他の

next_bin_data <= ("0000" & blip) current_bin_data;
終了の場合;

next_bin_addr <= current_bin_addr;
bin(conv_integer(next_bin_addr)) <= next_bin_data;          -- write incremented value
if (next_bin_data > full_bin_data) then
full_bin_addr <= next_bin_addr;                           -- remember the peak
full_bin_data <= next_bin_data;
終了の場合;

if (cycle /= cycles) then
カウント"=カウント '1';

終了の場合;

if (count = 255) then
cycle <= cycle '1';
終了の場合;

終了の場合;

end process;
fullest_bin_addr <= full_bin_addr;
fullest_bin_data <= full_bin_data;
end behave;
 

Welcome to EDABoard.com

Sponsor

Back
Top