Мазмуну:

VHDL жана Basys3 тактасын колдонуу менен негизги секундомер: 9 кадам
VHDL жана Basys3 тактасын колдонуу менен негизги секундомер: 9 кадам

Video: VHDL жана Basys3 тактасын колдонуу менен негизги секундомер: 9 кадам

Video: VHDL жана Basys3 тактасын колдонуу менен негизги секундомер: 9 кадам
Video: ModelSim & Verilog - Язык Проектирования Схем §10 2024, Июль
Anonim
Image
Image

Негизги VHDL жана Basys 3 тактасын колдонуу менен секундомерди кантип куруу боюнча көрсөтмөлөргө кош келиңиз. Биз сиздер менен долбоорубузду бөлүшүүгө кубанычтабыз! Бул 2016 -жылдын күзүндө Cal Poly, SLOдогу CPE 133 (Санариптик Дизайн) курсунун акыркы долбоору болчу. Биз курган долбоор - бул убакытты баштап, баштапкы абалга келтирүүчү жана тындыруучу жөнөкөй секундомер. Бул Basys3 тактасындагы үч баскычты киргизүү катары алат жана убакыт тактанын төрт орундуу жети сегменттүү дисплейинде көрсөтүлөт. Өткөн убакыт секундада көрсөтүлөт: центисекунд форматы. Бул тактанын системалык саатын өткөн убакытты көзөмөлдөө үчүн колдонот жана жети сегменттүү дисплейдин төрт цифрасына убакытты чыгарат.

1 -кадам: материалдар

Киргизүүлөрдү жана чыгууларды жөндөө
Киргизүүлөрдү жана чыгууларды жөндөө

Бул долбоор үчүн сизге керектүү материалдар:

  • Xilinxтен орнотулган Vivado Design Suite WebPack менен 1 компьютер (версиясы 2016.2)
  • 1 Digilent Basys3 Xilinx Artix-7 FPGA тактасы
  • 1 USB порт кабели

2 -кадам: Киргизүү жана Чыгуу жөндөөлөрү

Жогорудагы сүрөттө башкы секундомер модулунун жогорку деңгээлдеги блок -схемасы көрсөтүлгөн. Секундомер "CLK" (саат), "S1" (баштоо баскычы), "S2" (пауза баскычы) жана "RST" (баштапкы абалга келтирүү) кириштерин алат жана 4 разряддуу "Аноддор", 7-битке ээ чыгаруу "сегментин" жана бир битти "DP" чыгаруу (ондук чекит). "S1" киргизүү жогору болгондо, секундомер убакытты эсептей баштайт. "S2" төмөн болгондо секундомер убакытты токтотот. "RST" бийик болгондо секундомер токтоп, убакытты кайра коет. Райондо төрт субмодуль бар: саатты бөлүүчү, цифралык эсептегич, жети сегменттүү дисплей драйвери жана жети сегменттүү дисплей кодору. Секундомердин негизги модулу бардык субмодулдарды бириктирет жана кириштер менен чыгууларды байланыштырат.

3 -кадам: Сааттарды жасоо

Сааттар жасоо
Сааттар жасоо

Саатты бөлүүчү модуль тутумдук саатты кабыл алат жана системалык сааттан ашпаган каалаган ылдамдыкта саат түзүү үчүн бөлүүчү киргизүүнү колдонот. Секундомерде эки башка саат модулу колдонулат, алардын бири 500 Гц, экинчиси 100 Гц саат жаратат. Саатты бөлүүчү схемасы жогорудагы сүрөттө көрсөтүлгөн. Саатты бөлүүчү бир битти "CLK", ал эми 32-биттик "Divisor" жана "CLKOUT" бирдиктүү чыгарууну алат. "CLK" - бул система сааты жана "CLKOUT" - алынган саат. Модуль ошондой эле NOT дарбазасын камтыйт, ал эсептөө бөлгүчтүн маанисине жеткенде "CLKTOG" сигналын которот.

4 -кадам: Онго чейин саноо

Онго чейин саноо
Онго чейин саноо

Сандык эсептегич ар бир цифраны 0дөн 10го чейин эсептейт жана эсептөө 10го жеткенде анын иштебей турушу үчүн башка цифраны жаратат. Модуль 3 бир битти "S", "RST" жана "CLK" кабыл алат "жана бир бит" N "жана 4-бит чыгаруу" D "алып келет. Киргизүү "S" - бул киргизүүдө иштетүү. Саат "S" бийик болгондо күйөт жана "S" төмөн болгондо өчөт. "RST" - бул баштапкы абалга келтирүү, ошондуктан "RST" жогору болгондо саат баштапкы абалга келет. "CLK" - цифралык эсептегич үчүн саат киргизүү. "N" - бул кийинки сан үчүн кириш сааты болуп турган сааттын чыгышы. Чыгуу "D" эсептегич турган цифранын бинардык маанисин көрсөтөт.

5 -кадам: Сандарды көрсөтүү

Сандарды көрсөтүү
Сандарды көрсөтүү

Жети сегменттүү дисплей кодери жети сегменттүү дисплей драйвер модулунан алынган бинардык санды коддоп, дисплейдин ар бир сегментине '1' же '0' мааниси катары чечмелене турган биттердин агымына айланат. Бинардык сан модул тарабынан 4 разряддуу "цифра" катары кабыл алынат жана 7-разряддын "сегменттерине" алып келет. Модуль 0дөн 9га чейинки ар бир мүмкүн болгон киргизүү мааниси үчүн конкреттүү 7-бит агымын дайындай турган бир иштин процесс блогунан турат. Жети биттик агымдагы ар бир бит дисплейдеги цифралардын жети сегментинин бирин билдирет. Агымдагы сегменттердин тартиби "abcdefg" жана "0" берилген санга жарык берген сегменттерди билдирет.

6 -кадам: Секундомерди кантип көрсөтүү керек

Секундомерди кантип көрсөтүү керек
Секундомерди кантип көрсөтүү керек

Жети сегменттүү дисплей драйвер модулунда "D0", "D1", "D2" жана "D3" 4 биттик 4 киргизүү бар, алардын ар бири көрсөтүлө турган төрт цифраны билдирет. Киргизүү "CLK" - бул системанын саат кирүүсү. Бир бит чыгаруу "DP" жети сегменттүү дисплейде ондук чекитти билдирет. 4-разряддуу "Аноддор" жети сегменттүү дисплейде кайсы цифранын көрсөтүлөрүн аныктайт жана 4-биттин "темп" 2-разряддык башкаруу "SEL" абалына жараша болот. Модуль "SEL" контролдук киришине жана үч чыгууга 4 мультиплексорду колдонот; "Аноддор", "темп" жана "DP".

7 -кадам: Бардыгын бириктирүү

Баштоо жана тындыруу баскычтарын түзүү үчүн 500 Гц сааттан турган "эгер" процесс блогу колдонулат. Андан кийин ар бир субмодулдун компоненттерин жарыялоо жана ар кандай сигналдарды колдонуу менен секундомердин башкы модулуна бардык субмодулдарды бириктирип коюңуз. Сандык субмодульдер мурунку цифралык субмодулдун саат өндүрүшүн алат, биринчиси 100 Гц саатта. Цифралык подмодулдардын "D" чыгышы андан кийин жети сегменттүү дисплей драйвер модулунун "D" киришине айланат. Жана акырында жети сегменттүү дисплей айдоочу модулунун "темп" чыгышы жети сегменттеги коддогуч модулунун "темп" киришине айланат.

8 -кадам: Чектөөлөр

Чектөөлөр
Чектөөлөр

"RST", "S1" жана "S2" киргизүү үчүн 3 баскычты (W19, T17 жана U18) колдонуңуз. W19 - баштапкы абалга келтирүү баскычы, T17 - баштоо баскычы (S1), U18 - тындыруу баскычы (S2). Саатты киргизүү үчүн чектөө W5 портун колдонуу менен да талап кылынат. Ошондой эле, бул линияны саат чектөөсүнө кошууну унутпаңыз:

create_clock -add -name sys_clk_pin -период 10.00 -толкун формасы {0 5} [get_ports {CLK}]

Аноддорду жана сегменттерди тактага байлаңыз, андыктан секундомер жети сегменттүү дисплейде көрсөтүлөт, чектөөлөр файлында.

9 -кадам: Тестирлөө

Тестирлөө
Тестирлөө

Түзмөгүңүз үч баскыч менен ойноп иштээрин текшериңиз: кодуңуз менен мүмкүн болгон көйгөйлөрдү табуу үчүн аларды мүмкүн болгон тартипте басып туруу.

Сунушталууда: