Агуулгын хүснэгт:

VHDL болон Basys3 самбарыг ашиглах үндсэн секундомер: 9 алхам
VHDL болон Basys3 самбарыг ашиглах үндсэн секундомер: 9 алхам

Видео: VHDL болон Basys3 самбарыг ашиглах үндсэн секундомер: 9 алхам

Видео: VHDL болон Basys3 самбарыг ашиглах үндсэн секундомер: 9 алхам
Видео: Lec002 Diseño de Sistemas Embebidos basados en MicroBlaze (II) (umh1759 2014-15) 2024, Долдугаар сарын
Anonim
Image
Image

VHDL болон Basys 3 үндсэн самбар ашиглан секундомер хэрхэн бүтээх талаар зааварчилгаанд тавтай морилно уу. Бид тантай төслөө хуваалцахдаа баяртай байна! Энэ бол Cal Poly, SLO -ийн намрын 2016 оны 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-д хүрэхэд хэлбэлздэг дараагийн цагийг ажиллуулах өөр цагийг бий болгодог. Модуль нь "S", "RST", "CLK гэсэн 3 битийн оролтыг авдаг. "бөгөөд нэг битийн гаралт" 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 битийн дөрвөн оролт байдаг бөгөөд тус бүр нь харуулах дөрвөн цифрийг илэрхийлнэ. "CLK" оролт нь системийн цагийн оролт юм. Нэг битийн гаралт "DP" нь долоон сегментийн дэлгэц дээрх аравтын бутархайг илэрхийлнэ. 4-битийн гаралт "Анодууд" нь долоон сегментийн дэлгэц дээр аль цифрийг харуулахыг тодорхойлдог бөгөөд 4 битийн "temp" гаралт нь "SEL" 2-битийн хяналтын оролтын төлөв байдлаас хамаарна. Модуль нь "SEL" хяналтын оролт болон гурван гаралтанд 4 мультиплексор ашигладаг; "Анодууд", "темп", "АН".

Алхам 7: Бүгдийг нэгтгэх

500 Гц давтамжтай ажиллаж байгаа 'хэрэв' процессийн блокыг эхлүүлэх, түр зогсоох товчлуурыг үүсгэхэд ашигладаг. Дараа нь дэд модуль бүрийн бүрэлдэхүүн хэсгүүдийг зарлаж, янз бүрийн дохиог ашиглан бүх дэд модулиудыг секундомерын үндсэн модульд холбоно. Цифрүүдийн дэд модулиуд нь өмнөх цифрийн дэд модулийн цагийн гаралтыг авдаг бөгөөд эхнийх нь 100 Гц давтамжтай байдаг. Дижитал дэд модулийн "D" гаралт нь долоон сегментийн дэлгэцийн драйвер модулийн "D" оролт болно. Эцэст нь долоон сегментийн дэлгэцийн драйвер модулийн "temp" гаралт нь долоон сегментийн кодлогч модулийн "temp" оролт болно.

Алхам 8: Хязгаарлалт

Хязгаарлалтууд
Хязгаарлалтууд

"RST", "S1", "S2" оролтонд 3 товчлуур (W19, T17, U18) ашиглана уу. W19 бол дахин тохируулах товч, T17 бол эхлэх товч (S1), U18 бол түр зогсоох товч (S2) юм. W5 портыг ашиглан цагийн оролтын оролтыг хязгаарлах шаардлагатай. Түүнчлэн, энэ мөрийг цагийн хязгаарлалтад оруулахаа бүү мартаарай.

create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]

Анод ба сегментүүдийг самбар дээр холбож, хязгаарлалтын файлд харуулсан шиг долоон сегментийн дэлгэц дээр секундомерийг харуулна.

Алхам 9: Туршилт

Туршилт
Туршилт

Таны кодтой холбоотой аливаа бэрхшээлийг олж мэдэхийн тулд төхөөрөмжөө дараалсан дарааллаар нь дарж гурван товчлуур дээр дарж ажиллаж байгаа эсэхийг шалгаарай.

Зөвлөмж болгож буй: