Съдържание:
- Стъпка 1: Спецификации
- Стъпка 2: RTL изглед на цялата система
- Стъпка 3: Тестова среда
- Стъпка 4: Прикачени файлове
Видео: Проектиране на обикновен кеш контролер във VHDL: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Пиша тази инструкция, защото ми беше малко трудно да получа някакъв референтен VHDL код, за да науча и да започна да проектирам кеш контролер. Затова сам проектирах кеш контролер от нулата и го тествах успешно на FPGA. Представих прост директно картографиран кеш контролер тук, както и моделирах цяла система процесор-памет за тестване на кеш контролера. Надявам се, че ще намерите тази инструкция полезна като справка за проектиране на ваши собствени кеш контролери.
Стъпка 1: Спецификации
Това са основните спецификации на Cache Controller, който ще проектираме:
- Директно картографирано. (отидете на тази връзка, ако търсите Асоциативен картографиран кеш контролер)
- Еднобанков, блокиращ кеш.
- Политика за запис при попадения.
- Политика за разпределяне без запис или писане около грешки при запис.
- Няма буфер за запис или други оптимизации.
- Матрицата с етикети е включена.
Освен това ще проектираме и кеш памет и система за основна памет.
Стандартните (конфигурируеми) спецификации на кеш паметта:
- 256 байта еднобанков кеш.
- 16 кеш линии, всеки кеш ред (блок) = 16 байта.
Спецификациите на основната памет:
- Синхронна памет за четене/запис.
- Многобанкова преместена памет - четири банки памет.
- Размерът на всяка банка = 1 kB всяка. Следователно общият размер = 4 kB.
- Word (4 байта) адресируема памет с 10-битова шина за адреси.
- По -висока честотна лента за четене. Прочетете ширината на данните = 16 байта в един тактов цикъл.
- Ширина на данни за запис = 4 байта.
ЗАБЕЛЕЖКА: проверете по-новите ми инструкции, ако търсите дизайн на 4-посочен асоциативен кеш контролер
Стъпка 2: RTL изглед на цялата система
Пълното RTL представяне на горния модул е показано на фигурата (с изключение на процесора). Стандартните спецификации за автобусите са:
- Всички автобуси за данни са 32-битови автобуси.
- Адресна шина = 32-битова шина (Но само 10 бита са адресирани тук от паметта).
- Блок данни = 128 бита (Широка ширина на честотната лента за четене).
- Всички компоненти се задвижват от един и същ часовник.
Стъпка 3: Тестова среда
Модулът Top е тестван с помощта на Test Bench, който просто моделира неконвейерен процесор (Тъй като проектирането на цял процесор не е никак лесно !!). Test Bench често генерира заявки за четене/запис на данни в паметта. Това се подиграва с типичните инструкции „Зареждане“и „Съхранение“, общи за всички програми, изпълнявани от процесор. Резултатите от теста успешно провериха функционалността на Cache Controller. По -долу са наблюдавани статистическите данни за теста:
- Всички сигнали за четене/запис на пропуски и удари са генерирани правилно.
- Всички операции за четене/запис на данни бяха успешни.
- Не са открити проблеми с несъответствието/несъответствието на данните.
- Дизайнът беше успешно проверен по време на Maxm. Тактова честота на работа = 110 MHz в Xilinx Virtex-4 ML-403 Board (цялата система), 195 MHz само за Cache Controller.
- За основната памет се извеждат блокови RAM. Всички останали масиви са внедрени на LUT.
Стъпка 4: Прикачени файлове
Следните файлове са приложени тук с този блог:
- . VHD файлове на Cache Controller, Cache Data Array, Main Memory System.
- Тестова пейка.
- Документация за Cache Controller.
Бележки:
- Прегледайте документацията за пълно разбиране на представените тук спецификации на кеш контролера.
- Всички промени в кода зависят от други модули. Така че промените трябва да се извършват разумно. Обърнете внимание на всички коментари и заглавки, които съм дал.
- Ако по някаква причина не се извеждат блокови RAM за основната памет, НАМАЛЯВАЙТЕ размера на паметта, последван от промени в ширината на адресната шина във файловете и т.н. Така че същата памет може да бъде внедрена или на LUT, или на разпределена RAM. Това ще спести време и ресурси за маршрутизиране. Или отидете в конкретната документация за FPGA и намерете съвместимия код за Блокиране на RAM и съответно редактирайте кода и използвайте същите спецификации на ширината на адресната шина. Същата техника за Altera FPGA.
Препоръчано:
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: 4 стъпки
Проектиране на прост четирипосочен контролер за асоцииран кеш във VHDL: В предишните ми инструкции видяхме как да проектираме прост директно картографиран кеш контролер. Този път вървим крачка напред. Ще проектираме прост четирипосочен контролер за асоциативен кеш. Предимство? По -малък процент пропуски, но с цената на перфо
Проектиране на програмируем контролер за прекъсвания във VHDL: 4 стъпки
Проектиране на програмируем контролер за прекъсвания във VHDL: Уморен съм от вида на отговорите, които получавам в този блог. Благодаря ви момчета, че посетихте моя блог и ме мотивирахте да споделя знанията си с вас. Този път ще представя дизайна на друг интересен модул, който виждаме във всички SOC - Interrupt C
Дизайн на I2C Master във VHDL: 5 стъпки
Дизайн на I2C Master във VHDL: В тази инструкция се обсъжда проектирането на прост I2C master във VHDL. ЗАБЕЛЕЖКА: щракнете върху всяко изображение, за да видите пълното изображение
Проектиране на обикновен VGA контролер във VHDL и Verilog: 5 стъпки
Дизайн на прост VGA контролер във VHDL и Verilog: В тази инструкция ще проектираме прост VGA контролер в RTL. VGA контролер е цифровата схема, предназначена за задвижване на VGA дисплеи. Той чете от Frame Buffer (VGA Memory), който представлява рамката за показване и генерира необходимо
Проектиране на UART във VHDL: 5 стъпки
Дизайн на UART във VHDL: UART означава универсален асинхронен приемник предавател. Това е най -популярният и най -прост протокол за серийна комуникация. В тази инструкция ще научите как да проектирате UART модул във VHDL