YouTube2Text

W2 SystemVerilog Part1 TR — Transcript

by Hasan Erdem Yantır · 7,463 words · 1,370 segments · language en · Watch on YouTube

Full transcript

  1. 0:04Şimdi arkadaşlar tekrardan hoş geldiniz.
  2. 0:07Dersle ilgili birkaç konudan bahsettik.
  3. 0:09Zaten geçen hafta da bunlardan
  4. 0:10bahsetmiştik. Ben size Türkçe
  5. 0:11kayıtlarını göndereceğim. Şimdi bu geçen
  6. 0:15hafta giriş yapmıştık. Neleri bilmeniz
  7. 0:17gerekiyor ondan bahsetmiştim size. E
  8. 0:19onun slaytlarına muhakkak bakın. Dersin
  9. 0:21slaytlarını dersten önce gönderiyorum.
  10. 0:24E isterseniz yani alıp bir tablette
  11. 0:27filan varsa üzerinde aynı anda not
  12. 0:30alabilirsiniz. Gerçekten faydalı oluyor.
  13. 0:32Ben de böyle yapıyordum önceden. Eee
  14. 0:34faydasını görüyordum. O yüzden size
  15. 0:36öncesinden paylaşıyorum PDF olarak. Bu
  16. 0:38derste geçen ders giriş yapmıştık zaten.
  17. 0:41Bu derste artık hardware description
  18. 0:43language'leri görmeye başlayacağız ve
  19. 0:45özellikle hardware description language
  20. 0:47içinden en güzeli olan sistem verilo
  21. 0:50görmeye başlayacağız. Şimdi ben geçen
  22. 0:52derste de bahsetmiştim. Kompleks bir
  23. 0:55işlemciyi yani şurada gördüğümüz mesela
  24. 0:57complex bir Apple M4 işlemcisi var.
  25. 1:00Nasıl tasarlıyoruz?
  26. 1:03Yaptığımız şu. Normalde bu işlemci
  27. 1:05tranzistörlerden oluşuyor.
  28. 1:06Transzistörler bir araya geliyor. Endoor
  29. 1:08kapılarını oluşturuyor filan. Biz
  30. 1:10bunlarla hiç ilgilenmiyoruz. Bizim
  31. 1:12aslında yazdığımız bir kod. Biz hardware
  32. 1:14description language kullanarak
  33. 1:16abstraction yapıyoruz. Yani hardware
  34. 1:18description language'te bir sayısal
  35. 1:20devreyi betimliyoruz. Onun altındaki
  36. 1:22hangi end or kapılarını kullandık? FSM
  37. 1:25mi kullandık? More mu kullandık? Milli
  38. 1:26mi kullandık? Bizi umursamıyor. Yani
  39. 1:28burada abstraction yapıyoruz. Aslında
  40. 1:32detayları gizliyoruz. Eğer bizim için
  41. 1:34önemli değilse
  42. 1:36bu noktada eğer siz bir
  43. 1:40karışık bir işlemci tasarlamak
  44. 1:42istiyorsanız yapmanız gereken asıl
  45. 1:43hardware description language kullanarak
  46. 1:45detayları gizlemek. Detaylardan kastım
  47. 1:47burada logic, digital circuit, analog
  48. 1:50circuit, device, physics mesela
  49. 1:52elektronlarla falan uğraşmıyoruz. E
  50. 1:54detayları gizlemek. Biz hardware
  51. 1:56description language'ü kullanarak bu bir
  52. 1:58dil C++ gibi bir dil ama bu hardware'ı
  53. 2:01betimleyen bir dil. Bunu kullanarak
  54. 2:03işlemciyi tasarlıyoruz. İşlemciyi
  55. 2:06betimliyoruz. E daha sonra bunu
  56. 2:08sentezliyoruz. Computer aided design
  57. 2:10tooları var. O toolar vasıtasıyla
  58. 2:12sentezliyoruz ve çipi üretiyoruz. Çipi
  59. 2:15tasarlıyoruz, üretiyoruz.
  60. 2:17Yani şu an most commercial designs build
  61. 2:20using HTLs. Aslında most değil hemen
  62. 2:22hemen bütün commercial designların hepsi
  63. 2:25HTL kullanılarak yapılıyor. Ha böyle
  64. 2:27analog hocaları olur. Analogçular mesela
  65. 2:29çipleri kendisi eli şeylerini çip yapmak
  66. 2:33istediklerinde transistörleri elle
  67. 2:34şekillendiriliyor. Geçen hafta
  68. 2:35bahsetmiştik ya. Onlar elle yapıyor ama
  69. 2:38normalde sayısalcıysanız %99.999 9 9 9
  70. 2:42HTL kullanmanız gerekiyor. Dünya
  71. 2:44üzerinde 3 tane önder HTL var. Eee,
  72. 2:48Verilock, sistem verilo log. Bunlar aynı
  73. 2:50kategoride veril bir sonraki versiyonu
  74. 2:52sistem verilo log düşünün. Bir de VHTL
  75. 2:54var. Sistem ver log burada yıldızı
  76. 2:58parlayan git gide insanlar VHD ile
  77. 3:01bırakıp sistem verilo log geçiyor. Çünkü
  78. 3:02sistem verilog hem tasarımda hem de
  79. 3:06doğrulamada size büyük fayda sağlıyor.
  80. 3:11Biz burada bu derste sistem veril
  81. 3:13göreceğiz. Sistem verilog üzerinde
  82. 3:15yoğunlaşacağız. VHTL'e bakmayacağız. Biz
  83. 3:18hardware description güçleri neden
  84. 3:19kullanıyoruz? Öncelikle sentez bir
  85. 3:23dediğim gibi bir hardware description
  86. 3:24language ile işlemci tasarlıyoruz
  87. 3:26mesela. Sonra bunu sentezliyoruz. E bu
  88. 3:29sentezlediğimiz bizim hardware'a
  89. 3:31dönüşüyor. Yine aynı şekilde FPJ
  90. 3:33sistemleri de böyle. Mesela FPJ bit
  91. 3:35stream oluşturuyorsunuz. FPJ üzerinde
  92. 3:37çalıştırıyorsunuz. O da aslında sentez
  93. 3:38diye geçiyor. Onun da başlangıç noktası
  94. 3:40hardware description language. Bir
  95. 3:42sistem verlock'la dijital devre
  96. 3:44betimlemeniz gerekiyor. Aynı zamanda
  97. 3:47insanlar hardware description language'i
  98. 3:49betimledikleri sistem, betimledikleri
  99. 3:51dijital sistemi simüle etmek için de
  100. 3:54kullanıyor.
  101. 3:56Devreye inputlar veriyor. Gerçekten
  102. 3:58diyor benim tasarladığım gibi çalışıyor
  103. 4:00mu diyor. Yani ben sentez için
  104. 4:01kullanabiliyorum bunu. Simülasyon için
  105. 4:03kullanabiliyorum.
  106. 4:06Ve simülasyonun bir adım ötesinde
  107. 4:08insanlar verifikasyon için de
  108. 4:09kullanıyor. Verifikasyonda şöyle
  109. 4:12yani simülasyonda asa simüle
  110. 4:14ediyorsunuz. Input veriyorsunuz
  111. 4:15outputlar veriliyor size. Verifikasyonda
  112. 4:18aynı zamanda bunu yapıyorsunuz. Bir de
  113. 4:20üstüne o aldığım outputluklar outputlar
  114. 4:23doğru mu diye kontrol ediyorsunuz
  115. 4:24aslında. Doğrulama birisi simüle etme. E
  116. 4:28türkçesi şimdi aklıma gelmedi ama
  117. 4:30verifikasyonda doğrulama.
  118. 4:34Şimdi burada biz hardware description
  119. 4:36language yazmaya başlayacağız. Ben size
  120. 4:38örneklerini göstereceğim ama bunu burada
  121. 4:40en büyük yapılan hata şimdi siz
  122. 4:43mühendissiniz. C metlab görerek
  123. 4:45geliyorsunuz. Bu dili CATL gibi
  124. 4:47düşünmemeniz gerekiyor. Bu dilde bir
  125. 4:51betimleme yaparken daima donanımı arka
  126. 4:53planda kafanızın arkasında düşünmeniz
  127. 4:56gerekiyor. Bu tam böyle C dili gibi
  128. 4:58değil. C dilinde nasıl kodları
  129. 5:00yazıyorsunuz sırayla çalışıyor. Bu dilde
  130. 5:02öyle değil. Bu dilde yazdığınız kodların
  131. 5:03hepsi paralel çalışıyor. Aynı anda
  132. 5:05çalışıyor. Ama belli bir süre sonra
  133. 5:07pratik yaptıkça zaten anlamaya
  134. 5:09başlıyorsunuz. Az çok kafanızda
  135. 5:10canlanmaya başlıyor artık. Ama normal
  136. 5:12bunu software dili gibi asla düşünmeyin.
  137. 5:14Bu yeni bir şey. Yeni bir kavram.
  138. 5:15Yeniden başladığınızı düşünün. Farklı
  139. 5:18bir kodlama tekniği.
  140. 5:23Şimdi sistem verilog'u yavaş yavaş
  141. 5:26tanımaya başlayalım. Bu derste sistem
  142. 5:28verilog üzerine yoğunlaşacağız. Bundan
  143. 5:30sonraki derste de risif'a başlayacağız
  144. 5:32artık. Ya biz normalde ilk derste ne
  145. 5:33yaptık? Berve yaptık. Logic filan
  146. 5:35gördük. Hatta dedik bu konseptleri
  147. 5:37bilmiyorsanız bu dersi bırakabilirsiniz
  148. 5:39ya da ek vakit ayırıp bunları öğrenmeniz
  149. 5:43gerekiyor dedik. Eee bu derste sistem
  150. 5:45verilo göreceğiz. Bir sonraki dersten
  151. 5:47itibaren de Ris 5'a gireceğiz. Artık
  152. 5:48işlemcilere gireceğiz. Sonra git gide
  153. 5:50işlemcinin karmaşıklığı artacak. İlk
  154. 5:51basit işlemcileri göreceğiz. Sonra çok
  155. 5:53daha karmaşık işlemcilere eee girmeye
  156. 5:55başlayacağız. Şimdi sistem ve log
  157. 5:58modülleri iki tip modül belirtiyorsunuz.
  158. 6:01Burada modül dediğimiz aslında bizim
  159. 6:04modül dediğimiz aslında bir tane dijital
  160. 6:06devre mesela bir flipfop bir modül
  161. 6:08aslında ya. Bir modül ne? Inputu var
  162. 6:11inputları var. Bir de output'ları var.
  163. 6:15Ve burada bazı dijital operasyonlar
  164. 6:17yapılıyor. Mesela Philip Flock var. İşte
  165. 6:19end kapısı var. OR kapısı var. Ya bu
  166. 6:22inputlar geliyor burada bazı
  167. 6:24operasyonlardan geçiyor. Output
  168. 6:25veriliyor. Buna biz modül diyoruz.
  169. 6:27Aslında modül dediğiniz bir tane sayısal
  170. 6:29devre. Sayısal devreye karşılık geliyor.
  171. 6:33İki tip modül var. Behavioral veya
  172. 6:35structural. Eee behavioral
  173. 6:38biraz daha üst seviyeden modülü
  174. 6:40tanımladığımız yöntem. E structural da
  175. 6:43biraz daha alt seviyeden tanımladığımız
  176. 6:45yöntem. Genelde işlemci
  177. 6:47tasarlayacaksanız hani çok karmaşık
  178. 6:48işlemci tasarlayacaksınız
  179. 6:50çok böyle structural modül çok
  180. 6:52kullanılmaz. Behavoral yazarsınız
  181. 6:54kodları. Ama tabii ihtiyaç olursa
  182. 6:57structurer da yazabilirsiniz. Aslında
  183. 6:59çok detaylı bir ayrıntı değil bu iki
  184. 7:01modül tipi olması ama böyle bir ayrım
  185. 7:04var.
  186. 7:06Ve sistem verlog'da bir modül
  187. 7:07tanımlayacaksanız yapacağınız iş şu.
  188. 7:11Modül ve end modül yazıp arasına burada
  189. 7:15modülün ne fonksiyon yapacağını yazmanız
  190. 7:17gerekiyor. Burada şu modüle karşılık
  191. 7:19gelen sistem veri log kodu var. Şimdi bu
  192. 7:22modüle bir isim vermişiz biz. İsmi
  193. 7:24example diye bir isim vermişiz. Modül
  194. 7:27şurada modül ismi ve modülün aldığı
  195. 7:29inputlar. AVC inputlarını alıyor ve
  196. 7:33modülün output'u burada Y output'unu
  197. 7:36veriyor bu modül. Yani AVC'yi alıyor
  198. 7:38içeride bazı operasyonlar yapıyor. Y'ı
  199. 7:40veriyor bize. Ve burada da modülün
  200. 7:43içinde de fonksiyonu koyuyoruz. Bunu
  201. 7:45ileride göreceğiz. Ne koyacağız? Şu an
  202. 7:47mesela bu modül boş. ABC Y diyoruz ya.
  203. 7:50Bu modül direkt hani ABC inputu alıyor.
  204. 7:53Y output'u var. Hiçbir şey yapmıyor.
  205. 7:55Yani Y output da burada ne olur? Geçen
  206. 7:57ders görmüştük. Z olur. High impedance
  207. 8:00olur yani. Çünkü v hiçbir şey sürmüyor
  208. 8:02bu modül şu an. Şu output, logic via.
  209. 8:05Burada logic tipi önemli. Logic
  210. 8:07dediğimiz şu. Bu logic bir verival gibi
  211. 8:10düşünün. Bir kablo. Yani burada bu kablo
  212. 8:13logic olursa 0 1 olabilir, Z olabilir, X
  213. 8:16olabilir. Şu Z ile X'i geçen derste
  214. 8:19görmüştük. Z high impedance. X de unnow.
  215. 8:22High impedance. Neti sürmüyorsunuz.
  216. 8:25X'te net sürülüyor ama 0 mı 1 ne olduğu
  217. 8:29belli değil.
  218. 8:35Bu logic tipi yani bu dört değişkenden
  219. 8:38birine denk geliyor. Bu dört değerden
  220. 8:39bir tanesine denk geliyor. Ya burada
  221. 8:41benim a b c birer bitlik. Bu arada
  222. 8:43bunlar birer bitlik sinyallerim modülde.
  223. 8:46Bir de y outum var. Önemli olan buradaki
  224. 8:49keywordler modül and modül. Bir de
  225. 8:52example burada da name of the modül.
  226. 8:54Modülün içinde şöyle parantezle ben
  227. 8:57inputu ve output'unu tanımlıyorum.
  228. 9:00Burada içini doldurduğumuz bir örnek
  229. 9:02var. Ne yapıyorum burada? Bir yine aynı
  230. 9:05şekilde bir modülüm var. Example isminde
  231. 9:093 tane inputum var benim. A B C A B C
  232. 9:13Bir tane de Y output'um var. Burada bir
  233. 9:17operasyon yapmışım
  234. 9:20bu modülün içini. Şimdi artık boş
  235. 9:21bırakmamışım. Bir operasyon yapmışım.
  236. 9:24Şunu diyorum. Buradaki Y
  237. 9:28A'nın tersi and B'nin tersi and C'nin
  238. 9:32tersi.
  239. 9:33Sonra bu orlanıyor şununla. Şununla
  240. 9:36orlanıyor. Sonra şununla orlanıyor. Yani
  241. 9:38şöyle
  242. 9:41A'yı alıyorum burada.
  243. 9:43A'nın aynı zamanda bir de notını
  244. 9:44alıyorum. Şurada A'nın natı var. Mesela
  245. 9:47AT, B not, CAT'ı endliyorum. Bunların
  246. 9:51notları endleniyor mesela. Bir yandan da
  247. 9:53notlarını aldım
  248. 9:55ve bunları bir end kapısına sokuyorum.
  249. 9:59Tabii bu buraya verilmiyor.
  250. 10:02Daha sonra şu işlemi de yapıyorum
  251. 10:04burada. A BC'yi alıyorum. Eee, şu işlemi
  252. 10:06de yapıyorum burada. Burada A, B, C
  253. 10:09mesela ne yapılıyor? A and, B, not, and,
  254. 10:12C not. Yani A'nın kendisini alıyorum
  255. 10:15artık. A'nın notını değil de E kendisini
  256. 10:17alıyorum. Şuradan kendisini alıyorum.
  257. 10:20Yine bir end kapısı. B not C not'ı
  258. 10:22alıyorum burada. Mesela şu şekilde çizim
  259. 10:25kötü oldu ama hani. Sonra git gide eee
  260. 10:28şunların alt tutunu orluyorum. Sonra
  261. 10:31Y'ye veriyorum. Buna bir tane daha
  262. 10:32geliyor. Burada şu ifade de buraya
  263. 10:34geliyor. Bir tane daha. Bunun üçünün
  264. 10:37çıkışını da orluyorum. Aslında burada
  265. 10:38yaptığım şu. S bu işlem s dediğimiz
  266. 10:41aslında s y dediğimde aslında Y'ye şu
  267. 10:46operasyonu ata diyorum. Yani şu logic
  268. 10:48operasyonu yapıyorum ben. Burada bir
  269. 10:49sürü end, or, işte not operasyonları
  270. 10:52var. Bu işlemin sonucunu y'ye ata
  271. 10:55diyorum. Asign da burada yeni gördüğümüz
  272. 10:56bir keyword daha.
  273. 10:59Bunu da çizdiğimiz zaman bu arada şimdi
  274. 11:01şöyle bu normalde baktığınız zaman 3
  275. 11:03tane bir tane üç girişli or kapısı var
  276. 11:06burada. Sonra şuralarda mesela üç
  277. 11:08girişli end kapıları var. Eee bunların
  278. 11:11bağlının natı var. Ama siz bunu
  279. 11:13sentezlediğiniz zaman bu ufalabiliyor.
  280. 11:16E nasıl oluyor? Mesela bazı ifadeler
  281. 11:19şurada mesela inat sin var ya bu ortak
  282. 11:21terim a'yı burada iptal ediyor mesela. O
  283. 11:24şekilde sentezleyince siz bunu
  284. 11:26sentezlemeyi bu arada eda tooları
  285. 11:29yapıyor. Hani biz yapmıyoruz. O da bir
  286. 11:30abstraction aslında. Ya ben tutup da
  287. 11:33HTL'ile yazdığım kodu kendim
  288. 11:35sentezlemiyorum. EDA toolarını
  289. 11:36veriyorum. o red logic reductionlar
  290. 11:38yapıyor. En küçük hale getiriyor.
  291. 11:41Aslında burada baktığınız zaman böyle
  292. 11:42bayağı bir logic operasyon var gibi
  293. 11:44gözüküyor ama e çıkan devre
  294. 11:46sentezlenirse, optimize edilebilirse bu
  295. 11:48şekilde oluyor. Burada yeni operasyonlar
  296. 11:52ekledik. Bir assign keyword'ünden
  297. 11:53bahsettim size. Buradaki operasyonun
  298. 11:55sonucu Y'ye atanıyor. Asign buna denk
  299. 11:58geliyor. Bir de şu işaretler de not and
  300. 12:02or gate'lere karşılık geliyor tam
  301. 12:03olarak. Hani bizim logic'te gördüğümüz
  302. 12:05gate'ler aslında A not, B not mesela, C
  303. 12:09not. Bunların sonra endlenmiş hali. E
  304. 12:14anlaşılmayan bir şey var mı arkadaşlar
  305. 12:15burada?
  306. 12:18Şimdi bu
  307. 12:22bunu simüle ettiğinizde e şöyle bir
  308. 12:26sonuç alıyorsunuz mesela. Yani bu
  309. 12:27normalde fonksiyonel karşılığı bu. Eee,
  310. 12:30sentezlediğiniz zaman bayağı küçük bir
  311. 12:31devre oluşuyor. Çünkü buradaki bazı
  312. 12:33terimler gereksiz. Onlar siliniyor.
  313. 12:35Silindikten sonra bir simüle ettiğiniz
  314. 12:38zaman yine verilatör var. Mesela ben
  315. 12:40size verilatörü göstereceğim. Bu sistem
  316. 12:43verilog'da betimlediğiniz donanımları
  317. 12:46nasıl simüle edeceğinizi. Eee, bunu
  318. 12:48simüle ettiğiniz zaman mesela buna
  319. 12:50karşılık gelen fonksiyonel şeyi
  320. 12:52görebiliyorsunuz. E, waveform
  321. 12:54diyagramını. Burada aslında wave form
  322. 12:56şeyi gösteriyor size. Hani birler,
  323. 12:57sıfırlar. Eee, süre ilerledikçe siz bu a
  324. 13:02inputlarını değiştirdikçe y nasıl
  325. 13:04değişiyor onu gösteriyor. Aslında burada
  326. 13:06bu da simüle edilmiş. Şu devrenin simüle
  327. 13:09edilmiş hali.
  328. 13:12Buralarda anlaşılmayan bir şey yok,
  329. 13:13değil mi? Bu en temeli. Bunu, bu yapıyı
  330. 13:15kullanarak biz daha karmaşık devreler,
  331. 13:19en sonunda da bayağı karmaşık işlemciler
  332. 13:21betimlemeye başlayacağız inşallah. Şimdi
  333. 13:24sistem ve log sintaksia bazı önemli
  334. 13:27kurallar var. Bunları yapa yapa
  335. 13:29öğrenirsiniz.
  336. 13:31Yani hata yapa yapa öğrenirsiniz
  337. 13:33bunları.
  338. 13:34Büyük küçük harf önemli burada. Mesela
  339. 13:37R'si büyük resetle R'si küçük reset aynı
  340. 13:40sinyal değil.
  341. 13:42Sonra bu C gibi C gibi eee normalde bir
  342. 13:46tane mesela modül ismi vermek
  343. 13:47istiyorsunuz. Harfle şeyle
  344. 13:49başlayamıyorsunuz.
  345. 13:51Sayıyla başlayamıyorsunuz.
  346. 13:54Yani boşluklar
  347. 13:56ignore ediliyor, önemsenmiyor. Eğer
  348. 13:58comment koymak istiyorsanız kodun içine
  349. 14:00bol comment koyun. Eee, yani şu iki
  350. 14:03comment'i sanırım C'de de böyleydi. Bu
  351. 14:05iki comment şu mult line olan bu da
  352. 14:08single line için olan bu şekilde
  353. 14:10command'ler koyabiliyorsunuz.
  354. 14:13Burada structural system berlock örneği
  355. 14:16var. Mesela burada bir modül
  356. 14:19tanımlanmış. End 3 ismi koyulmuş. Bunu 3
  357. 14:22end diyemiyordum modül ismini. Çünkü
  358. 14:25sayıyla başlayamıyorum. End 3
  359. 14:26diyebiliyorum ama ilk kelimeyle
  360. 14:28başlıyorum. Sonra harf bir sayı
  361. 14:30koyabiliyorum. Burada aslında yaptığı şu
  362. 14:333 ABC birer bitlik logic sinyaller. Bir
  363. 14:36de output logic sinyalim var. Y bu Y
  364. 14:40sinyali ABC burada gelince ABC geliyor.
  365. 14:45End kapısından geçiyor. 3 inputluk bir
  366. 14:47end kapısı. Y sinyali çıktı olarak
  367. 14:50veriliyor. Çünkü Y sinyali output. Şu
  368. 14:52ABC input, Y output.
  369. 14:56Mesela burada inverter tasarımı var.
  370. 14:58Inverter ne? Bir tane input'unuz var. Y
  371. 15:00direkt onun tersi. Signile bu şekilde
  372. 15:02yapabiliyorsunuz.
  373. 15:03E nent. Şimdi structural ve log örneği
  374. 15:07vereceğim dedim size. Şimdi bunlar iki
  375. 15:08modül değil mi? Ben bunları ikisini de
  376. 15:10tasarladım. Bir tane modülüm var benim.
  377. 15:12Bu modülümün ismi end 3. Bir tane daha
  378. 15:14modülüm var. Bu modülün ismi de
  379. 15:16inverter. Bu end 3 modülü AVC inputuna
  380. 15:21sahip ve çıktı olarak da Y var.
  381. 15:24Inverterda
  382. 15:26girdi olarak a var. Çıktı olarak eee Y
  383. 15:30var. Şimdi ben bu iki tane modülü
  384. 15:34tanımladığım iki modülü kullanarak yeni
  385. 15:38bir modül oluşturabilirim. Nasıl oluyor
  386. 15:40bu? Bir tane daha modül yapıyorum ve o
  387. 15:43modülün içinde bu modülleri çağırıyorum.
  388. 15:45Hani C'deki fonksiyon çağırma gibi.
  389. 15:50Burada ne olmuş mesela? A BC inputlarım
  390. 15:54var benim. A B C inputlarım var. Bir de
  391. 15:58G o output'um var. Ve içeride modülün
  392. 16:01içinde bir tane daha sinyal
  393. 16:03tanımlamışım. 1 bitlik sinyal
  394. 16:04tanımlamışım. Bu sinyalin ismi N1
  395. 16:06sinyali. Ve daha sonra şunu yapmışım. Şu
  396. 16:10N3 modülünü
  397. 16:12bir tane burada instantiate etmişim.
  398. 16:14Yani çağırmışım. Burada N3 modülünü
  399. 16:17çağırınca ne oluyor? Buraya bir tane end
  400. 16:193 koyuyor adam. Bunun ismi endgate'miş.
  401. 16:24Ve ABC'yi bu Endgate'e bağlamışım ben.
  402. 16:28Şimdi çağırırken de şu N3 modülünü
  403. 16:31çağırdım ya tam karşılığına gelecek olan
  404. 16:34şu AC şunun giriş ABC'lerini şu end 3'ün
  405. 16:38giriş ABC'lerine bağlamışım sırasıyla.
  406. 16:41Bu ABC'ye sırayla bağlanmış. Output'unu
  407. 16:44da N1'e bağlamışım. Yani şu endgate'in Y
  408. 16:46output'u M1 diye bunun içindeki sinyale
  409. 16:49bağlanmış. Daha sonra bu N1'i almışım
  410. 16:52ben. Bir inverter çağı inverter
  411. 16:54modülünden instan şey etmişim. Buraya
  412. 16:56koymuşum aslında. Çağırmak değil de
  413. 16:58aslında koymak. Yani aynısını alıp
  414. 16:59buraya kopyalattırıyorum.
  415. 17:01Bu inverterda N1'i input olarak almış.
  416. 17:04Y'yı output olarak buraya bağlamış. Şu
  417. 17:06sinyali buraya bağlamış. E bu inverterün
  418. 17:09karşılık gelen inputu m1, output'u y.
  419. 17:12Bunu sırasıyla yazınca böyle birebir
  420. 17:14karşılık geliyor. Böyle sırasıyla aynı
  421. 17:16karşılıkta geliyor.
  422. 17:19Bu şekilde. Yani burada tanımladığım
  423. 17:20benim iki tane modülü almışım. Burada
  424. 17:23kullanmışım. Buna structuralı system
  425. 17:24verlock deniyor. Structural olarak daha
  426. 17:27önce tanımladığınız modülleri burada
  427. 17:30çağırabiliyorsunuz. Tekrar tekrar
  428. 17:31kullanabiliyorsunuz.
  429. 17:35Burada anlaşılmayan bir şey var mı
  430. 17:36arkadaşlar? Sistem ve log en basitinden
  431. 17:38yapısı bu şekilde.
  432. 17:41Combinational logic burada örnekleri var
  433. 17:43aslında. Hızlı hızlı geçebiliriz. Burada
  434. 17:47artık biraz önceki örneklerde size tek
  435. 17:50binlik tek bitlik sinyalleri
  436. 17:51anlatmıştım. Burada artık sinyallerimiz
  437. 17:54eee 4 bitlik. Mesela burada 4 bitlik
  438. 17:56sinyali nasıl tanıyorum ben?
  439. 17:57Tanımlıyorum. Input logic 30 diyorum. 30
  440. 18:01deyince bu şu demek. 3'ten 0'a kadar
  441. 18:05yani toplam 4 tane eleman var. Aslında
  442. 18:07bunu bir matriks vektör tanımlama gibi
  443. 18:09bu. E ben burada 4 bitlik bir A sinyali
  444. 18:13tanımlıyorum aslında. Yani bunun inputu
  445. 18:16şurada bu modül diyelim. Şöyle
  446. 18:18modülümüz.
  447. 18:20Bu modülün inputu şurada artık A sinyali
  448. 18:24var ama bu A sinyali 4 bitlik sayı. Yani
  449. 18:2700'dan
  450. 18:280'dan
  451. 18:301 1'e kadar farklı değerler alabilecek
  452. 18:33bir input. Bu 4 bitlik çünkü. B de aynı
  453. 18:36şekilde ve çıkışta da dörder bitlik Y1,
  454. 18:38Y2, Y3, Y4, Y5 outlarım var. Ve ben
  455. 18:42burada 5 tane Sign kullanarak y1, Y2,
  456. 18:46Y3, Y4, Y5'e sırasıyla end, or, xor,
  457. 18:49nend, nor eee, operasyonlarını yapıp
  458. 18:52çıktılarını buna atıyorum.
  459. 18:56Burada 5 farklı operasyon yapıyorum.
  460. 18:58Önceden ben mesela A'la B'ye ne
  461. 19:01yapmıştım? A'la B birer bitlik sinyaldi.
  462. 19:03Mesela 0'a 1 dediğim zaman bu Y1 0
  463. 19:05olacaktı. Artık A'la Bitlik
  464. 19:09sinyal. Öyle olunca şu endi kullanınca
  465. 19:12tek end'i kullanınca eee bu mesela şey
  466. 19:15yapacak. Bitler arası operasyon yapacak.
  467. 19:16Her bit kendi pozisyonuyla ve çıktısı da
  468. 19:184 bitlik olacak. Bu şekilde. Bunlar için
  469. 19:21de aynısı geçerli. Bu aşağıdaki
  470. 19:23operasyonlar için de aynısı geçerli.
  471. 19:25Burada bir comment kullanılmış. Eee, bu
  472. 19:28multiline bir comment kullanılmış.
  473. 19:31Yani sentezlediğimiz zaman da çıkan
  474. 19:33sonuç böyle. Şuradaki mesela kullanılan
  475. 19:35orlar. Tamam, bir tane burada exor
  476. 19:37kapısı görüyorsunuz ama bu exor
  477. 19:38kapısının girişleri dörder bitlik. Yani
  478. 19:40dörder bitlik exorlar artık 40 bitlik
  479. 19:43değil. Mesela burada not var. Bu not 4
  480. 19:46bitlik not. 4 bit'i alıyor. Her bir biti
  481. 19:49ayrı ayrı çevirip 4 bitlik bir output
  482. 19:51veriyor.
  483. 19:52Yani şurası bizim modülümüz aslında
  484. 19:54burada. Sistem verta
  485. 19:56hiç HDL kullanmayan var mı aranızda?
  486. 19:59Herkes kullandı mı? EHB mi bölüm?
  487. 20:02>> Evet.
  488. 20:02>> Tamam sıkıntı değil. Öğrenirsin.
  489. 20:08Mesela burada bir tane daha başka bir
  490. 20:09operasyon var. Normalde ben end'leri ne
  491. 20:11yapıyordum?
  492. 20:15iki operatörlü yapıyorum. İki tane
  493. 20:18inputu oluyordu end'in. E ile b'yi
  494. 20:20endliyordum. 1 bitlikse 1 bitlik sonuç
  495. 20:22alıyordum. İşte 4 bitlikse 4 bitlik
  496. 20:24sonuç alıyordum. Burada bir reduction
  497. 20:26operasyonu örneği var. Yine aynı şekilde
  498. 20:28bir modül tanımım var benim. End8 diye.
  499. 20:318 bitlik bir A girişim var ve 1 bitlik Y
  500. 20:35çıkışım var. Yaptığım işlem şu. Bu A'nın
  501. 20:38bütün elemanlarını kendi içinde
  502. 20:40endliyorum. Şimdi A böyle bütün
  503. 20:43elemanları yani A0 A1 A7'ye kadar kendi
  504. 20:46içinde birbirleriyle endleniyor. Bir
  505. 20:48tane y outuna veriliyor. Bunu da yapmak
  506. 20:51için end'i tek operantlı olarak
  507. 20:54kullanıyorum. Yani mesela bunu a and a
  508. 20:57deseydim A'yı kendi içinde endleyip 8
  509. 21:00bitlik A'yı Y'ye atacaktı. Gerçi y
  510. 21:02burada 1 bit ama e ama mesela burada
  511. 21:05sadece end a dediğimde bu şuna denk
  512. 21:07geliyor. A'nın bütün şeylerini,
  513. 21:10elemanlarını birbirleriyle endle. Yani
  514. 21:12şuna karşılık geliyor. Bu operasyonu
  515. 21:14yap. 1 bit çıkış ver. Şu bizim modülümüz
  516. 21:16oldu. Artık
  517. 21:20conditional assignment var. Bu arada
  518. 21:22şimdiye kadar hep atama yapmak için
  519. 21:24assign kullandık. İleride assignı
  520. 21:26kullanmadığımız örnekler de olacak.
  521. 21:27Bloglar yazmaya başlayacağız. Öyle
  522. 21:30olunca dili daha iyi kullanmaya
  523. 21:31başlayacağız.
  524. 21:33Şimdi conditional assignment ne? Burada
  525. 21:36dörder bitlik D0 ve D1 inputlarım var.
  526. 21:38Bir de çıktım var. Bir de başka bir
  527. 21:41inputum var S diye. Bir de 4 bitlik Y
  528. 21:44output'um var. E şu modülümüz
  529. 21:48burada yaptığı şu. S1 ise D1'i Y'ye
  530. 21:52atıyor. S0'sa şey S1 ise D1'i Y'ye
  531. 21:55atıyor. S0'sa D0'ı Y'ye atıyor. Yani bu
  532. 21:58aslında şu turnleriy operasyon. Bu C'de
  533. 22:00de var galiba.
  534. 22:02Eee burada
  535. 22:04aslında bir max oluşturuyor bu.
  536. 22:07Ve s burada 1 bitlik değer. 1 bitlik
  537. 22:10değerin değerine göre y'ye şu 4 bitlik
  538. 22:13Y'ye D1'i veya D0'ı atıyor. Buna
  539. 22:15ternerary operasyon deniyor. Sign da
  540. 22:18burada şunu diyor. Şu operasyonu yap.
  541. 22:21Onun sonucunu Y'ye ata. Bu şekilde
  542. 22:29daha önce bahsetmiştik. Internal
  543. 22:31veriabalar'lar kullanabiliyoruz.
  544. 22:33Mesela burada PG diye internal
  545. 22:36variabel'lar var. Bu şu demek. Ben bir
  546. 22:40log modülü tanımladığım zaman içeride
  547. 22:44kendim internal variablel'lar
  548. 22:46tanımlayarak bazı operasyonların
  549. 22:48sonucunu tekrar tekrar kullanabilirim.
  550. 22:50Mesela burada bir floder örneği var. A B
  551. 22:53C in girmiş. Ata fuller ne?
  552. 22:57A B C in.
  553. 23:00Çıktısı da s ile C out. Yani fulledir
  554. 23:04bu. Ala A B bir de carry ini topluyor. S
  555. 23:08ile C out'a veriyor. Ya aslında hani
  556. 23:11yaptığı işlem şu. A B C'yin hepsi 1e eee
  557. 23:14SAM 1 oluyor, carry out 1 oluyor. Bir
  558. 23:17tanesi 0sa diğeri ikisi 1 ise SAM 0
  559. 23:21oluyor. Carry out 1 oluyor. Mesela carry
  560. 23:23var mı yok mu? Taşan var mı yok mu?
  561. 23:27E bu yani şu A + B + C in operasyonu
  562. 23:30yapıp 2 bitlik çıktı veriyor bu. Şimdi
  563. 23:33burada iki tane benim internal sinyalim
  564. 23:36var. P ile G sinyali. P sinyali aslında
  565. 23:39baktığınız zaman feder logic tablosunu
  566. 23:41yazıp kendiniz yaptığınız zaman bir
  567. 23:43tanesi exora karşılık geliyor. Bir
  568. 23:44tanesi end kapısı. Daha sonra bu P ile
  569. 23:46G'yi ben carry inle mesela bir tanesini
  570. 23:49tekrar XOR'la geçirip aslında A xor, Bor
  571. 23:52C in Sama'a karşılık geliyor. E carryde
  572. 23:56şuna karşılık geliyor. Carde de şu G'nin
  573. 23:59A and B'nin sonucunu burada tekrar şu A
  574. 24:02and B'ye denk geliyor. Tekrar reuse
  575. 24:04edebiliyorum. tekrar kullanıyorum yani.
  576. 24:06Ya şu P aslında mesela şuradaki OR kapıs
  577. 24:10şey kapısına girerken eee tam olarak
  578. 24:14pardon G şu G şuradaki or kapısına
  579. 24:16mesela şu şekilde içeriden
  580. 24:18aktarılabiliyor. Yani çünkü kendim için
  581. 24:20de logic tanımlıyorum. Ha tanımlamasam
  582. 24:24yine olurdu ama o zaman burada P
  583. 24:25gördüğüm her yere şu operasyonu tekrar
  584. 24:27tekrar yazacaktım. Şuraya da yazacaktım
  585. 24:29mesela. Ama tekrar tekrar tekrar use
  586. 24:32edeceğiniz sinyalleri tekrar burada
  587. 24:34içeride bir sinyale aktarırsanız e daha
  588. 24:38da kodunuz sadeleşmiş oluyor.
  589. 24:47Yani bu aslında logic dediğimiz burada
  590. 24:49bir wire yani sadece veri taşıyan wire
  591. 24:52demek. Logic
  592. 24:54bu operasyonlar arasında bir öncelik
  593. 24:58var.
  594. 24:59Şu bu arada hani ben size end oran
  595. 25:02gösterdim ama çok fazla operasyon var
  596. 25:04kullanabileceğiniz. Bu not operasyonu 1i
  597. 25:070 1 yapıyor. Multiplication division
  598. 25:09modulus operasyonları var. Mesela
  599. 25:11işlemci tasarlayacağız. Tutup da biz
  600. 25:13böyle şunu kullanarak bu full header'ı
  601. 25:16kullanarak e 1 bitlik flader kullanarak
  602. 25:1964 bitlik flodiri kendimiz yapmayacağız.
  603. 25:21Ne yapacağız? 64 bitlik iki sinyali artı
  604. 25:23yazıp geçeceğiz. Direkt toplayacağız.
  605. 25:24Yani bu mesela toplama çıkartma
  606. 25:27operasyonları var. çarpma operasyonları
  607. 25:29da yine aynı şekilde sağa sola shift
  608. 25:31operasyonu var. Aritmetik shift
  609. 25:33operasyonu var. Eee ondan sonra
  610. 25:35comparison operasyonları var. Küçük,
  611. 25:37küçük eşit, büyük eşit. Eee eşit mi
  612. 25:39değil mi operasyonları var. End, nend
  613. 25:41kapıları, or
  614. 25:44ve terner operasyon. Bunu da görmüştük.
  615. 25:47Ya bunlar arasında bir öncelik sırası
  616. 25:48var. E en öncelik olanın at şu aşağıya
  617. 25:52kadar değişiyor öncelikleri. Bunu
  618. 25:53ezberlemenize gerek yok. Direkt normalde
  619. 25:56mesela bunu ezberlemek yerine parantez
  620. 25:58içinde operasyonları kullanırsanız bu
  621. 26:01parantezler şu demek oluyor. Parantezin
  622. 26:03içi çözülmeden parantezin dışına
  623. 26:05çıkamıyor, çıkılamıyor. O yüzden hani bu
  624. 26:07tabloyu ezberlemek yerine bir operasyon
  625. 26:09yazacaksanız daima parantezler
  626. 26:11kullanarak operasyonlarını yazın ki
  627. 26:13kendiniz nasıl olmasını, çalışmasını
  628. 26:16istiyorsanız ona göre e çalıştırırsınız.
  629. 26:18Çünkü parantez en önceliği. Mesela siz
  630. 26:21diyelim ki a and b şu not yaptınız
  631. 26:25mesela. Eee normalde bu operasyon
  632. 26:28önceliği şu ilk başta A'nın tersini al
  633. 26:30der. Sonra B ile bu A'nın tersini entle
  634. 26:33der. Çünkü şu en öncelikli olan bu. Ama
  635. 26:36sizin yapmak istediğiniz A' la B'yi
  636. 26:38entleyip onun tersini almaksa buraya bir
  637. 26:40parantez atarsınız. Parantez size
  638. 26:42önceliğini getirir. Hani ilk parantezin
  639. 26:44içine öncelikli çözmeye çalışır. Yani
  640. 26:46şununla şunu aslında şey yapar.
  641. 26:48e ayırır. Parantez içini çöz parantez
  642. 26:51içi çözülmeden dışarıya geçilmez.
  643. 26:56Şimdi biz sistem verilda kodlama
  644. 26:58yaparken
  645. 27:00şeyler de kullanacağız tabii. Numaralar
  646. 27:02da kullanacağız. Constantlar değişmezler
  647. 27:05kullanacağız. Eee bu değişmezleri de
  648. 27:07hardware description lang içinde
  649. 27:09belirtmek için eee bir formatımız var.
  650. 27:12Nasıl belirteceğimiz. Burada formatımız
  651. 27:14şu şekilde. N base value. Yani N şurada
  652. 27:19kaç bitten oluşur?
  653. 27:22Kaç bitten oluşacağı daima log 2 bu
  654. 27:24arada hani 2 ikilik tabanda ikincilik
  655. 27:27tabanda kaç bitten oluşur? B base base'i
  656. 27:30sayının base'i sistem verilogta
  657. 27:34işte binary octal
  658. 27:37e hexadecimal bir de decimal sayı
  659. 27:40belirtebilirsiniz.
  660. 27:42E ve sayının değeri hani şu base'de
  661. 27:44belirttiğiniz değer mesela şunu
  662. 27:46diyebilirsiniz. 8 decimal 10. Bu şu
  663. 27:49demek şuradaki decimal 10 sayısı var ve
  664. 27:52bu 8 bitten oluşuyor. Daha sonra ben
  665. 27:55mesela bu sayı üzerinde end kapısıyla
  666. 27:57işlem yapacağım zaman şimdi 10 normalde
  667. 27:59ne? 10 1 0 1 0 değil mi? Şurada adam 4
  668. 28:05tane daha 0 varmış diye kabul ediyor.
  669. 28:07Çünkü bu sayıyı ben 8 bit dedim. Bunu 8
  670. 28:09bitlik yapıyor. Normal hardware
  671. 28:11description language neydi zaten?
  672. 28:13Hardware'i tanımlamak için. Hardware
  673. 28:14neydi? Daima binarylerle uğraşıyordu. O
  674. 28:16yüzden adamın binaryilerle ulaşacak olan
  675. 28:19işte kodun edatuluun e kaç bitten
  676. 28:22oluştuğunu bilmesi lazım. Onu da şu nle
  677. 28:26belirtiyoruz. Kaç bitten oluştuğunu. Ama
  678. 28:27daima burası bit oluyor. Mesela burada
  679. 28:298d 10 ama bu ikilik desimal sayı değil.
  680. 28:32Yani 8'lik 8d10 diyeceğim. Yani kaç
  681. 28:35bitten oluştu?
  682. 28:37Burada bazı örnekleri var. Mesela bu
  683. 28:39binary B, burada binary şu B'nin de
  684. 28:42kısaltmaları var. İşte B, D, H. E bir de
  685. 28:47o oktal. Bu binary bu decimal, bu
  686. 28:49hexadecimal, bu octal. Oktalase 8. Hiç
  687. 28:53kullanmadım hayatımda. E şimdi burada
  688. 28:56binary olarak mesela 3 bitlik binary
  689. 28:59sayı var. 101. E bu 3 bitten oluşuyor.
  690. 29:03Burada mesela bir tane şey de
  691. 29:05yapabiliyorsunuz. Şu eni belirtmeden
  692. 29:07tırnak B11 diyorsunuz ya. Bu unsized
  693. 29:10oluyor artık. O sırada kaç bite bunu şey
  694. 29:13yaparsa eee aslında şey yapıyor. E
  695. 29:15compiler burada nasıl davranıyor
  696. 29:17bilmiyorum. Değişiyor compilerlara göre
  697. 29:19de. Yani siz yapmayın belli olmaz.
  698. 29:21Compiler'a göre değişir bu. Eee bunlar 8
  699. 29:24bitlik mesela. Bu 3 bitlik decimal 6
  700. 29:26sayı. Bu 6 bitlik octal 42 sayısı. Bu 8
  701. 29:31bitlik hexadeimal av sayısı.
  702. 29:34E 42 unsize. Bunu default olarak decimal
  703. 29:37olarak alıyor.
  704. 29:40Mesela şöyle bu herhalde mesela bu
  705. 29:42sayıyı belirtmezseniz büyük ihtimalle 32
  706. 29:44bit filan alıyor olabilir. O compilera
  707. 29:46bağlı. 32 bit alıyordur. Ama bir sayı
  708. 29:50kullanmak istiyorsanız ki rispack
  709. 29:52işlemci tasarlarken mecbur
  710. 29:53kullanacaksınız.
  711. 29:56Bu şekilde belirtebiliyorsunuz sayıları.
  712. 29:59Burada bir tane bit manipulation örneği
  713. 30:02var.
  714. 30:04Artık modül falan belirtmedim.
  715. 30:09Y'ye bir assignment yapıyoruz. Y aslında
  716. 30:13burada şöyle A yani Y assignment'ını
  717. 30:16aslında birden fazla variable'ın
  718. 30:19parçalarını toplayarak bir araya
  719. 30:21getirerek oluşturuyorum. Eee bu bir
  720. 30:25Y burada 12 bitlik bir sinyal ya. Y
  721. 30:28logic 110
  722. 30:32G diye tanımlanmış diyelim yukarıda.
  723. 30:35Ve bu modülün AB girişleri var. Bu
  724. 30:38modüle AB sinyalleri giriş yapmış. Bu AB
  725. 30:42sinyallerinin bazı parçalarını alarak
  726. 30:44ben sinyali oluşturacağım.
  727. 30:48A sinyali mesela belki burada
  728. 30:513 bitlik olabilir. A belki logic logic
  729. 30:5430 a diye logic 20a diye tanımlı mesela.
  730. 30:59Eee b sinyali de belki bunun gibi ama
  731. 31:02yapmak istediğim şu Y sinyali ilk başta
  732. 31:06list significant bitler olarak 6 bitlik
  733. 31:081. 0 1 0'dan oluşacak.
  734. 31:127 biti A0 olacak. Sonra
  735. 31:168'den 8 9 10 bitleri B0 olacak. Bu şu
  736. 31:20ifade şunu diyor. B0'ı 3 kere ekle yan
  737. 31:24yana. 3 tane B0
  738. 31:273 kere çokla.
  739. 31:30A0 şurada. Burada da şu 6 bitlik sayı. 6
  740. 31:34bitlik sayı.
  741. 31:35Sonra A'nın 2'den 1'e kadar olan kısmını
  742. 31:39seç. Yani A'nın hepsini değil de ben
  743. 31:41A'nın 2'den 1'e kadar olan kısmını
  744. 31:43seçmek istiyorsam A parantez içinde 2 1
  745. 31:46yazıyorum. Köşeli parantez. Bu şuna denk
  746. 31:48geliyor. A2 A1 baktığımız zaman burada
  747. 31:53most significant biti a2 sonra A1 tane
  748. 31:56B0 sonra A0 da şu 6 bitlik sayıdan
  749. 32:00oluşan bir 12 bitlik sayıyı ben bu
  750. 32:02şekilde Y'ye assign edebiliyorum. Yani
  751. 32:05bu şuna karşılık geliyor.
  752. 32:09Böyle bazen mesela şurada bir tane
  753. 32:12sayıyı yazarken 6 bitlik sayı denmiş.
  754. 32:14Undersore kullanılmış. Sayıyı bazen
  755. 32:17böyle durmadan 10'ları çok yan yana
  756. 32:19eklerseniz okuması düşük oluyor. Öyle
  757. 32:22bir durumda undersore kullanarak sayılar
  758. 32:24arasında biraz boşluk bırakıp göze daha
  759. 32:27hoş gelmesini sağlayabilirsiniz. Burada
  760. 32:29da yaptığı o. Underscore bu işe yaramış.
  761. 32:34Burada bit manipülasyonlarıyla ilgili
  762. 32:35ikinci bir örnek var. Bir modül
  763. 32:37tanımlamışız. Bu modül şunu yapıyor. 8
  764. 32:40bitlik inputlar alıyor. Select Kutputa o
  765. 32:448 bit'lik inputlardan bir tanesini
  766. 32:46veriyor. D0'ı veya D1'e veriyor. Burada
  767. 32:49structural veril kodu yazmışız. Çünkü
  768. 32:51daha önce bir max 2 tasarlamıştık
  769. 32:53hatırlarsanız. Daha önce tasarladığımız
  770. 32:55max 2 vardı. O 4 bitlik maxı.
  771. 32:59Şuralarda bir 4 bitlik max tasarladık
  772. 33:01diye hatırlıyorum.
  773. 33:06Aynen. Şurada 4 bitlik bir max
  774. 33:07tasarlamıştık. Bu max'ı iki kere burada
  775. 33:10kullandığımı düşünün.
  776. 33:12Bir tanesi list significant bit maxı.
  777. 33:15Yani aslında 4 bitlik list significant
  778. 33:17bitlik parçasını bu seçiyor. Most
  779. 33:20significant bitlik parçalarını bu
  780. 33:21seçiyor. Bu benim modülüm.
  781. 33:24Modülümde şu Max 2'den iki tane
  782. 33:27kullanıyorum. Birisinin ismi LSB Max,
  783. 33:29diğeri de Most Significant Bit Max.
  784. 33:32E yine burada bit manipülasyonları nasıl
  785. 33:34yapılıyor onu göstereceğim. Normalde
  786. 33:36modülün girişinde 8 bitlik D0 ve D1 var
  787. 33:39ama benim şu max 2'lerim 4 bitlik.
  788. 33:42Şimdi ben burada
  789. 33:44seçme işlemi yapacakken şu list
  790. 33:47significant bit max'ı eee 0dan 3'e kadar
  791. 33:52olan bitleri seçmesi gerekiyor.
  792. 33:53Hangisinden alması gerekiyorsa bu diğer
  793. 33:56most significant bite bak bakanında
  794. 33:584'ten 7'ye kadar olan bitleri alması
  795. 34:00gerekiyor. Öyle bir durumda ne
  796. 34:01yapıyorum? Bu max 2'ye D0 0'dan 3'e
  797. 34:05kadar olanları bağlıyorum. D1 için de
  798. 34:07aynısını yapıyorum. Ve bunun output'u da
  799. 34:09Y'nin 0'dan 3'e kadar olanını
  800. 34:12karşılık geliyor. S biti ikisinde de
  801. 34:15ortak oluyor. Ya bu iki max paralel
  802. 34:17çalışıyor bu arada. Hani böyle başta
  803. 34:19dedim ya bunu sequential düşünmeyin. C
  804. 34:21kodu gibi böyle sırayla çalışıyor değil.
  805. 34:23Her satır paralel çalışıyor bunda. Yani
  806. 34:26şu daha önce gösterdiğim örneklerde de
  807. 34:28mesela burada şuradaki bütün satırlar
  808. 34:30paralel çalışıyor aslında. Şu satırların
  809. 34:32hepsi şu eselerin hepsi aynı anda
  810. 34:33çalışıyor. Öyle düşünmeniz gerekiyor.
  811. 34:35Böyle sırayla çalışmıyor bunlar. Çünkü
  812. 34:37donanım oluşuyor. Donanım dediğiniz aynı
  813. 34:39anda çalışan şeyler. Bizim
  814. 34:41tasarladığımız işlemciler sequential
  815. 34:43çalışacak.
  816. 34:46Burada da dediğim gibi ara parantezde bu
  817. 34:49bilgiyi verdik. E 4 bitlik girişler var.
  818. 34:53Select'imiz aynı. Ya burası list
  819. 34:56significant 4 bit'i seçiyor. Burası most
  820. 34:58significant diğer 4 bit'i seçiyor. Bu
  821. 35:00şekilde mesela bir structur ve log kodu
  822. 35:02yazabiliyoruz. Floating output'tan geçen
  823. 35:05hafta bahsetmiştik. Floating normalde
  824. 35:09bir burada ya floating ne zaman
  825. 35:11oluşuyor? Bir tane wire var. Bunu
  826. 35:14sürmüyorsunuz. Mesela böyle bir
  827. 35:15transistör
  828. 35:17mesela şöyle bir transistör bağladınız
  829. 35:19bu wire'a. Aslında tam öyle o. Mesela şu
  830. 35:23VDD şurası VSS
  831. 35:26eee transistör bağladınız.
  832. 35:31Altta MOS var. Üstte P mouse var ama
  833. 35:34bunu sürmüyorsunuz. Mesela bunu şimdi
  834. 35:36burayı sürmeyince bunların ikisi de
  835. 35:39kapalı. Öyle olunca bu hatta ne var
  836. 35:42belli değil. Buna Z deniyor. High
  837. 35:45impedance. Yani sürülmüyor bu. Kimse
  838. 35:47sürmüyor bunu. Sürülmeyince de bilmiyor.
  839. 35:490 mı 1 mi? Referansa göre değişir.
  840. 35:52Burada da tret bir tane modül yazmışız
  841. 35:56biz. Şöyle bir trate modülümüz var.
  842. 35:59Enable input'umuz var. Bu bir bitlik
  843. 36:00input. Bir de 4 bitlik A inputumuz var.
  844. 36:04Çıkışımızda da
  845. 36:06Y output'umuz var. Y output'un türü
  846. 36:08artık tri. E ya aslında burada output
  847. 36:12tanımlarken tre kullanılmış. Yani logic
  848. 36:14yerine tre kullanılmış. Aslında bu biraz
  849. 36:16daha özel olarak biz tre de
  850. 36:18kullanılabilir
  851. 36:19diyoruz. Yani bunda tre değer de
  852. 36:21gelebilir. Aslında logic de alıyor bu
  853. 36:22arada. Logic de 0 1 x z'yi alabiliyor bu
  854. 36:25değerleri ama burada tre diye
  855. 36:27belirtilmiş. Büyük ihtimalle sentuna
  856. 36:29diyoruz. Hani burada tre state bir
  857. 36:31output olabilir diye. Ya ben hayatımda
  858. 36:33hiç kullanmadım. Hani tre diye bir şey
  859. 36:35hayatımda kullanmadım. Ama burada
  860. 36:37örnekte böyle bir kullanımı var. Şimdi
  861. 36:39böyle bir durumda burada modülün içinde
  862. 36:41yaptığımız ne? Asign Y deyip enable 1
  863. 36:45ise A'yı ver.
  864. 36:48Eğer değilse Z'yi ver. Z ne demek? Sürme
  865. 36:51demek aslında. Ben tula burada sürme
  866. 36:53diyorum. Yani Z atıyorum. Z atamak da
  867. 36:55aslında tula sürme demek. Yani aslında
  868. 36:57öyle bir durumda tool bunu sürmüyor.
  869. 37:00Ya böyle bir tre state kullanabilirsiniz
  870. 37:02ama tre state'ler genelde pek
  871. 37:04kullanılmıyor. TR state yerine max da
  872. 37:06kullanabilirsiniz.
  873. 37:08Genelde max kullanılıyor. Böyle bir
  874. 37:10sistem verilog yapısı.
  875. 37:14Bir sorusu olan var mı arkadaşlar bu
  876. 37:16noktaya kadar? Şu an bizda combinational
  877. 37:19log'yi gördük.
  878. 37:21Ara verelim. Aradan sonra sequential
  879. 37:23logiyi görmeye başlayalım. Bir soru
  880. 37:25varsa sorabilirsiniz bu arada.
  881. 37:29Ya konular basit aslında.
  882. 37:32Diğer dersten itibaren asıl meselelere
  883. 37:34girmeye başlayacağız.
  884. 37:37Devam edelim.
  885. 37:40Şimdi sistem veri logda combination
  886. 37:41logyi gördük. Sequential'a başlayacağız.
  887. 37:44Zaten burada artık önemli olmaya
  888. 37:46başlayacak. Çünkü combination logicle
  889. 37:48çok ya combination logic aslında bizim
  890. 37:50için bir aracı. Önemli olan aslında
  891. 37:53burada sequential logicin içine
  892. 37:55combinational logic yedirmek. Biz o
  893. 37:57şekilde işlemcileri yapıyoruz. Yani
  894. 37:59sequential logicin içine combinational
  895. 38:01operasyonlar giriyor. O sayede
  896. 38:03işlemciler oluyor. Yani normalde her şey
  897. 38:05sequential
  898. 38:07işlemcide.
  899. 38:12Sequential logic'te de
  900. 38:16e ya biz sistem veril okta. Şimdi
  901. 38:18sequential logic dediğimizde neler
  902. 38:19vardı? Geçen hafta görmüştük.
  903. 38:22Leşler ve filifloplar vardı.
  904. 38:25Bu leh ve flip flop aslında bizim
  905. 38:28hafızalarımız sequential logic'te. Çünkü
  906. 38:30neydi? Bir operasyon yapıyorduk. Bunlar
  907. 38:32end or kapıları, subtractorlar. Ama bir
  908. 38:35yandan biz bir de state tutuyorduk.
  909. 38:37Hafızamız vardı. O hafızayı tutmak için
  910. 38:39de flip flop kullanıyorduk. LH veya
  911. 38:41fliip flop kullanıyorduk. E bunlarla biz
  912. 38:45finance state machine oluşturduk. Daha
  913. 38:46önce de demiştim. İşlemci de zaten büyük
  914. 38:48bir finance state machine.
  915. 38:51Şimdi sistem ve log bazı keyword'ler
  916. 38:53kullanıyor aslında leh ve flip flopları
  917. 38:55oluşturmak için. Bu kullandığı keyword
  918. 38:58aslında always. E bu always'in üç farklı
  919. 39:01türü var. Ondan bahsedeceğim.
  920. 39:05Şimdi always statement'ı şöyle. Always
  921. 39:07diyorsunuz, add diyorsunuz. Yine bu
  922. 39:10keyword. Sensitivity list var. Ve burada
  923. 39:12bir statement var. Bu always şunu
  924. 39:14söylüyor size. Şu sensitiv listendi
  925. 39:16herhangi bir sinyal, ben burada
  926. 39:19sinyaller belirtiyorum. Herhangi bir
  927. 39:21sinyal değişirse bu statement'ı çalıştır
  928. 39:24diyor. Always blow'un yaptığı iş bu
  929. 39:26aslında. Yani bir sensitive list'tteki
  930. 39:28herhangi bir sinyal değişirse
  931. 39:31e bu sensitivity liste veya olan olay
  932. 39:34oluşursa e bunun türleri var. Buradaki
  933. 39:37statement çalışacak. Olay bu. En basit
  934. 39:41örneği mesela ben bir dilip flopu sistem
  935. 39:43ver kullanarak nasıl betimleyebilirim?
  936. 39:46Yine aynı mantıkla modül tanımım var. Bu
  937. 39:50modülün ismi modül fop. Dfil flop yapmak
  938. 39:54istiyorum.
  939. 39:55Input olarak clonum var. 4 bitlik girdim
  940. 39:59var. 4 bitlik çıktım var. Yani bu 4
  941. 40:01bitlik bir filip flop. Şurada clock
  942. 40:03inputu var. 4 bitlik D inputu var. 4
  943. 40:06bitlik Q output var. Ya bu flip flop
  944. 40:08normalde ne yapıyordu? clockun rising
  945. 40:11edge'inde bu D''deki değeri buraya
  946. 40:14yazıyordu. Q'da da aynı zamanda o çıktı
  947. 40:16olarak duruyordu. Bir sonraki clock
  948. 40:18kadar da bu değeri saklıyordu.
  949. 40:22Şimdi ben bu flip flop'u tanımlamak için
  950. 40:24ne yapıyorum? Always FF diye bu
  951. 40:26always'in bir üç türünden bir tanesini
  952. 40:29kullanıyorum. Always FF şunu söylüyor.
  953. 40:31Ben bu bloğun içinde flip flop yapmak
  954. 40:33istiyorum. Always FF. FF orada flip
  955. 40:34flop'a karşılık geliyor. Ve burada
  956. 40:38event'ım var. Sensitive listte ne olması
  957. 40:40gerekiyor? Always fage clock deyince bu
  958. 40:44clock da bir keyword. Şunu diyor. Şu
  959. 40:47clone yükselen kenarında yani positif
  960. 40:50edinde 0'dan 1'e doğru giderken bu
  961. 40:54always f'i çalıştır. Always FF'in içinde
  962. 40:56ne var? D''yi Q'ya atama var. Yani şu
  963. 40:58D''yi Q'ye atama var. Şimdi clock yokken
  964. 41:02mesela şurada veya clone folding edinde
  965. 41:04bu blok çalışmadığı için aslında ben
  966. 41:07burada sistem ver dilini kullanarak şunu
  967. 41:10diyorum. Sadece clock geldiğinde D''yi
  968. 41:14sakla. Clock yokken veya clock
  969. 41:16fallingageinde clock 1ken veya 0ken
  970. 41:20DQ'nun eski değerini sakla. O kalsın.
  971. 41:23Böylece bir filop yapmış oluyorum. Bunu
  972. 41:26sentezlediğim zaman da ben bir flip flop
  973. 41:29elde etmiş oluyorum. Bu en basit 1
  974. 41:31bitlik veya burada gördüğümüz 4 bitlik.
  975. 41:33Burada 1 bitlik de olabilirdi. Yani
  976. 41:35input logic d alıp 1 bitlik sinyalde
  977. 41:38saklayabilirdik.
  978. 41:40Şimdi bu basit flip flop. Şimdi reset
  979. 41:43eklemek istediğimde nasıl yapacağım?
  980. 41:45Yine bir modülüm var. Flop bu sefer R
  981. 41:48ekledim. Flop R dedim. Resettable fip
  982. 41:50flop bu. Çünkü reset lazım bu arada.
  983. 41:52Hani ilerisi için bilgi vereyim. Mesela
  984. 41:54bir işlemci yaptınız. Power tuşuna
  985. 41:56bastınız. İşlemci çalışmaya başladı.
  986. 41:58Bilinen bir değerde, bilinen bir statete
  987. 42:01başlatmanız lazım işlemciyi. En
  988. 42:03basitinden mesela işlemcinin
  989. 42:05registerlarında bir sayı tutulması
  990. 42:07lazım. Sıfır tutulması lazım. Mesela
  991. 42:09işlemci abuk subuk sonuç üretmesin.
  992. 42:11İşlemcinin bazı statelerini sizin
  993. 42:13bilinen değerlere atamanız lazım. Bu
  994. 42:15reset de buna yarar. Yani bilinen bir
  995. 42:17değerde devre başladığı zaman sonuçta
  996. 42:20benim registerlarım var. O registerlarım
  997. 42:22rastgele değerlerle başlamaz. Bildiğim
  998. 42:24bir değerle başlatırım registerları.
  999. 42:26Reset de o yüzden işe yarar. Yani
  1000. 42:28kullandığınız flip floplarda reset hemen
  1001. 42:31hemen yani hepsinde kullanmazsınız.
  1002. 42:33Hatta çoğunda reset biz kullanmayız ama
  1003. 42:35önemli flip floplar varsa mesela valid
  1004. 42:37biti gösteren fliip flop eee yaptığımız
  1005. 42:40işlemcide ve o flip flop hayati bir
  1006. 42:42değere sahipse mesela o flip flop
  1007. 42:44register'a yazma yapacak. Şimdi ben
  1008. 42:46devreyi başlattım yazma biti 1 oldu
  1009. 42:49yanlışlıkla başlarken 1 diye başladı.
  1010. 42:51pat diye yazma yapar. O yüzden biz
  1011. 42:52onları hep bilinen
  1012. 42:54stat'te yani etkisiz olacak şekilde
  1013. 42:56başlatırız. Reseti de kullanma amacımız
  1014. 42:58odur. Burada mesela senkron resetli bir
  1015. 43:01flip flopumuz var. Eee senkrondan kasıt
  1016. 43:04şu clock geldiği zaman
  1017. 43:07ben bu resetin değerine bakıyorum. Bir
  1018. 43:10de asenchron reset var. Onu da
  1019. 43:11göreceğiz. Y senchron resette şu
  1020. 43:13şekilde. Ben always yine aynı şekilde
  1021. 43:15always f bloğum var. Always f bloğum ne
  1022. 43:18zaman tetikleniyor? Clone Rising
  1023. 43:19Edge'inde ve clone rising edge'inde ben
  1024. 43:22reset eğer 1 ise Q'yu 0dan başlatıyorum.
  1025. 43:26Yani şurada 0 saklıyorum. Bilinen bir
  1026. 43:28res state'e sokuyorum bunu. Eğer reset
  1027. 43:31yoksa, reset gelmiyorsa, reset o sırada
  1028. 43:331 değilse, 0sa reset direkt eski
  1029. 43:37statement'ı elsini yapıyorum. Else de ne
  1030. 43:39diyor? D''yi Q'ye ata diyor. Yani bu if
  1031. 43:43reset varsa eğer reset yoksa yani reset
  1032. 43:460sa şu elsi yap diyor. Els de zaten
  1033. 43:48bizim bir önceki örnekte gördüğümüz
  1034. 43:50normal fliploptu. Resetsiz filip loptu.
  1035. 43:53Ya burada sadece biz bir f if özel
  1036. 43:56yapısını kullanarak bir bitlik eee
  1037. 43:58resetlik resetlenebilen bir flif flop
  1038. 44:01yaptık. Yani bir bit ekledik reset
  1039. 44:02bitini ve reset bitine göre Q'nun
  1040. 44:05değerini 0 mı saklayacak yoksa D''yi mi
  1041. 44:06saklayacak? Bunu belirledik.
  1042. 44:09resetli halini yaptık bunun. Mesela
  1043. 44:11burada bir enable daha eklenmiş hali
  1044. 44:13var. Resete ek olarak bir de enable'ım
  1045. 44:15var.
  1046. 44:17Eee buradaki resetin türü şu bu arada.
  1047. 44:19Ben artık asenkron reset ekliyorum
  1048. 44:21burada. Nasıl ekliyorum? Bir öncekinde
  1049. 44:23sadece cllo'a bağlı olarak bu always
  1050. 44:26floğu çalışıyordu. Bunda artık hem clowa
  1051. 44:31bağlı olarak hem de resete bağlı olarak
  1052. 44:33bu floğu tetikleniyor. Yani normalde
  1053. 44:37clock rising edge'in de bu alwaysight f
  1054. 44:40bloğu çalışıyor ama aynı zamanda reset 1
  1055. 44:43olsa da bu alwaysight f bloğu çalışıyor.
  1056. 44:45Böyle olunca şu clone rising age olsun
  1057. 44:48olmasın herhangi bir anda ben reseti 1'e
  1058. 44:50çekersem yine çalışıyor bu alwaysf
  1059. 44:52bloğu. Öyle bir durumda ne oluyor? Artık
  1060. 44:56reset clone edine bağlı değil. Asenkron
  1061. 44:59reset olmuş oluyor. Aradaki fark bu. Bu
  1062. 45:02anlaşıldı mı arkadaşlar bu fark? Buyur.
  1063. 45:09>> Hangisini? Şunun reseti mi?
  1064. 45:14Şimdi şöyle o zaman da şöyle bir sorunla
  1065. 45:18karşılaşırsın. Sistem verilog hani bunu
  1066. 45:19ileride göreceğiz ama mesela bu şu
  1067. 45:22resetlemeyi dışarı aldın diyelim. Şuraya
  1068. 45:24aldın. Sistem verilog şu Q'yu hem bir
  1069. 45:28always bloğunda hem başka bir yerde
  1070. 45:30sürmene izin vermez. Eee kafası karışır
  1071. 45:33yani o zaman. Mesela o zaman eee şimdi
  1072. 45:35şöyle diyelim mesela aldım diyelim.
  1073. 45:37Burada Q'yu reset geldi mesela. reset
  1074. 45:41dedin. Hatta turn logic yaptın. Tamam
  1075. 45:43mı? Sign dedin. Q dedin. Eşittir dedin.
  1076. 45:48Eee, reset varsa mesela reset varsa
  1077. 45:51dedin, eee, şey olsun dedin. Tamam mı? 0
  1078. 45:53olsun dedin. Tamam mı? Yoksa da e Q'nun
  1079. 45:57bir önceki değeri olacak demen
  1080. 45:58gerekiyor. Bu arada Q'yu tutması
  1081. 46:00gerekiyor. Şimdi öyle bir durumda. Şimdi
  1082. 46:02bu statement'da bu statement paralel
  1083. 46:03çalışacak. Clock gelecek. Hangisini
  1084. 46:05atayacak? Diyelim ki o sırada da reset
  1085. 46:08yok. Hangisi çalışacak? Yani orada dilin
  1086. 46:11karışıyor. O yüzden sistem veril şeyler.
  1087. 46:12Hani hiçbir zaman bir verival'a bir
  1088. 46:16always şimdi ileride birden fazla always
  1089. 46:18blowu kullanmaya başlayacağız. Ya bir
  1090. 46:20verival'a always bloğunun içinde atama
  1091. 46:22yaptıysan başka yerde atama yapma der.
  1092. 46:24Sistem verilo log yapmaman gerekir.
  1093. 46:26Yani temiz hali bu. Aslında aslında biz
  1094. 46:29burada şunu yapıyoruz. Yani bizim dilin
  1095. 46:32bize yani öyle bir dili kullanıyoruz ki
  1096. 46:35yarın bir gün bu dili dili sentezleyecek
  1097. 46:38tool. sentez yaparken bunun reset
  1098. 46:40olduğunu, resetli flop aldığını anlasın.
  1099. 46:42Yani onu da betimlemenin yöntemi
  1100. 46:44standart bir yöntem bu ya. Bunu mecbur
  1101. 46:46ezberleyeceğiz. Mesela standart
  1102. 46:48yöntemimiz bu. Şimdi burada enable'lı
  1103. 46:51olanı var. Enable'lı olan şöyle bir de
  1104. 46:54şimdi if vardı. Reset olunca ben 0
  1105. 46:57atıyordum. As kısmına geliyorum. As
  1106. 46:59kısmında tekrar bir if koyuyorum. If
  1107. 47:01enable 1 ise Q'yu D''ye atıyorum. enable
  1108. 47:051 değilse
  1109. 47:07hiç Q eski değerini korumaya devam
  1110. 47:09ediyor. Always FF bloğundaki davranış
  1111. 47:11bu. Çünkü burada always FF diye bir
  1112. 47:13keyword'üm var benim. Burada öncelik
  1113. 47:16resette yani reset 1 ise bu
  1114. 47:18resetleniyor. Reset 1 değilse enable 1
  1115. 47:21ise eee bu değer yeni değer yazılıyor.
  1116. 47:24Ha ikisi de reset 0 enable 0 isa Q eski
  1117. 47:27değerini koruyor. Çünkü always f
  1118. 47:29bloğunun yaptığı bu.
  1119. 47:35Burada öncelik sırasında reset öncelikli
  1120. 47:37çünkü yani şurada çalışırken şu reset
  1121. 47:40önden gelen
  1122. 47:42ilk resete bak demiş dil bize. Biz
  1123. 47:45yazarken dili ya bu bunu yaptığımız
  1124. 47:47zaman biz enable ve resetli bir dfil
  1125. 47:49flop e oluşturmuş oluyoruz. Ya enable'lı
  1126. 47:53dfil floplar çok hani genelde resetli df
  1127. 47:56flop kullanırsınız ama enable'lı dil
  1128. 47:58flop yok. Power reduction için genelde
  1129. 48:00clock enable'lı piloplar kullanırsınız.
  1130. 48:04Onları daha farklı bir tür.
  1131. 48:07Şimdi bu always fti. Bir de always lege
  1132. 48:10diye bir yapımız var bizim. Always leh
  1133. 48:12deed oluşturmak için kullanacağımız
  1134. 48:15yapılar. Lech de aslında bir sequential
  1135. 48:17devre elemanı. O da 1 bit tutuyor. Ama
  1136. 48:21leçin geçen derste bahsetmiştik. Leçin
  1137. 48:23tutma mekanizması biraz farklı ve o
  1138. 48:25tutma mekanizması çok sağlık değil. O
  1139. 48:27yüzden ledge kullanımından uzak dururuz.
  1140. 48:30Eğer profesyonelse kullanabilirsiniz.
  1141. 48:32Biz kullandığımızda oluyor mesela
  1142. 48:33leşleri ama yani gerçekten ne
  1143. 48:35yaptığınızı bilmeniz gerekiyor.
  1144. 48:36Tehlikeli eleman. Çünkü normalde bütün
  1145. 48:38dijital devreler aslında filipiloplarla
  1146. 48:40çalışmak üzere kurgulanmış. Sentest
  1147. 48:42toolları tarafından. Lash de yine bu
  1148. 48:44şekilde. Always leh diyorum. Sensitiv
  1149. 48:46list yok. Eğer clock geldiyse artık
  1150. 48:49clockum 1 mesela if clock dedin mi artık
  1151. 48:51bir öncekinde always taraf posage clock
  1152. 48:53diye belirtiyordum ya. Burada
  1153. 48:56artık clone değerine bakıyorum. O slash
  1154. 48:59diyorum. Posage clock filan yok. Eğer
  1155. 49:01clock 1 ise DIYQ'yı atıyorum. Eğer clock
  1156. 49:040a e direkt eski değerini saklıyor. Bu
  1157. 49:07da leç'i oluşturuyor. Ya bir sentlu
  1158. 49:09burada always le'i gördü mü şuraya
  1159. 49:12bakıyor. Şu içindeki statement'lara göre
  1160. 49:15uygun elemanı koyuyor aslında. Burada
  1161. 49:18mesela ben le dediğim için le'i koyuyor.
  1162. 49:20Sentez ama büyük ihtimalle leç
  1163. 49:22kullanmazsınız. Bu derste hiç
  1164. 49:24kullanmazsınız ondan eminim. İleride de
  1165. 49:26eee çok ileri ihtimallerde
  1166. 49:28kullanırsınız. Yani leşler genelde çok
  1167. 49:31kullanılabilir şeyler değil. Uzman
  1168. 49:33olunca kullanırsınız.
  1169. 49:35Eee ama dikkat etmeniz gerekiyor. Bazen
  1170. 49:37mesela öyle kodlar yazarsınız ki
  1171. 49:38örneklerini göstereceğim yanlışlıkla led
  1172. 49:40üretir. Onlara karşı dikkat etmeniz
  1173. 49:42gerekiyor.
  1174. 49:46Ya sequential logyye baktığımız zaman
  1175. 49:48aslında genel yapısı şöyle always var.
  1176. 49:50Bu always aslında burada bir keyword ama
  1177. 49:53normalde always yerine benim şey yazmam
  1178. 49:55gerekiyor. Ya flip flop sistem verilo
  1179. 49:57logta. Bu arada verilo logta always
  1180. 49:59statement'ı var. Sistem verilo logda
  1181. 50:01always fed bir de always comp. Birazdan
  1182. 50:04onu da göreceğiz. 3üncü türü var always
  1183. 50:06comp diye. Eee sistem verilog'da bu
  1184. 50:08always çoklanmış. Yani üç ayrı türü
  1185. 50:12getirilmiş bunun. Ya genelde sequential
  1186. 50:14logic'te ama genel yapı şu şekilde.
  1187. 50:16Always below. Bu always ff, always ledge
  1188. 50:18veya always comp olur. Sensitivity listi
  1189. 50:21var bunun genelde bu FF'te bu sensitive
  1190. 50:24list var. Always FF için. Bu sensitive
  1191. 50:26list de bizim clone rising age mi,
  1192. 50:28falling age mi orada mı tetikleyeceğiz?
  1193. 50:30Onu belli ediyor. Burada da statement
  1194. 50:33var. Çalışacak olan statement. Ya mesela
  1195. 50:35ben burada ki flip flop'umu rising ed'te
  1196. 50:39değil de falling ed'te sample yapsın
  1197. 50:41deseydim ben pos yerine şurada nech
  1198. 50:44yazacaktım.
  1199. 50:45Mesela resetim 1de değil de 0da
  1200. 50:48resetlesin deseydim buraya ne geç reset
  1201. 50:51olacaktı. Nege var bir de. Ama reset
  1202. 50:53için böyle bir durumda eee yani asenkron
  1203. 50:56resetlerde ne geç aslında değeri belli
  1204. 50:59ediyor. 1 veya 0 olmasını belli ediyor.
  1205. 51:00Çünkü bu asenkron reset.
  1206. 51:04Ya reset clock gibi değil. Rising
  1207. 51:05Falling Edge'i yok resetin ama dili
  1208. 51:08tanımlarken hani ortalık karışmasın diye
  1209. 51:10reseti de resetin polaritesini de belli
  1210. 51:13ederken negeage veya posage keyword'ü
  1211. 51:16kullanın demişler ama clock'tan da ayrı.
  1212. 51:17Clone posage negeci e rising mi falling
  1213. 51:21mi onu belli ediyor. Reset için level'ı
  1214. 51:23belli ediyor. 0da mı resetlenecek 1de mi
  1215. 51:26resetlenecek onu belli ediyor.
  1216. 51:30Şimdi
  1217. 51:32sequential logic böyleydi. Şimdi
  1218. 51:33combination logic using always dersek
  1219. 51:37burada da always comp denilen
  1220. 51:40statement'ı kullanmamız gerekiyor. Bu
  1221. 51:413üncü always türü. Always f, always
  1222. 51:43ledch ve always comp. Always comp 3üncü
  1223. 51:45türü. Eee ve artık normalde biz ne
  1224. 51:50yapmıştık? İlk örneklerde assign
  1225. 51:52statement'ı kullanmıştık. Assign why
  1226. 51:54deyip mesela bir operasyonu o atamıştık.
  1227. 51:56Onun yerine artık assign kullanmak
  1228. 51:58yerine always comp deyip assign
  1229. 52:00kullanmadan operasyonlar yapıp atama
  1230. 52:04yapabiliriz. Burada aslında dersin
  1231. 52:06başındaki bu assign'la yaptığımız
  1232. 52:08örneğin aynısı var ama artık always comp
  1233. 52:11blowuyla yapıyoruz bunu. Inputlarımız
  1234. 52:13var. AB inputlarımız dörder bitlik ve
  1235. 52:16outputlarımız var 5 tane. Aynı örneği
  1236. 52:19normalde ben bunu assign always
  1237. 52:21compagini yazmamıştım buraya. E always
  1238. 52:24compagtu. E hepsi assignaydı. Onun
  1239. 52:29yerine ben bunu comp'la yapıyorum. O
  1240. 52:32comp diyorum. Begin diyorum. T'in
  1241. 52:35arasına bu beginin end'in arasında
  1242. 52:38yapacağım operasyonları assign demeden
  1243. 52:40direkt yazıyorum. Mesela burada A and B
  1244. 52:43diyorum. Dörder bitlik 4 bitlik end
  1245. 52:45operasyonu yapılıyor. Y1'e atanıyor bu
  1246. 52:47şekilde. Şimdi ben bu always comp
  1247. 52:50sayesinde normalde always şimdi bunu
  1248. 52:53assign'la da yapabilirsiniz ama always
  1249. 52:55comp'la yaparsanız bunu always compun
  1250. 52:58içinde if case yapıları kullanmaya
  1251. 53:01başlıyorsunuz. O yüzden zaten mümkün
  1252. 53:03mertebe assign kullanmayın. Hani ben
  1253. 53:05size ilk başta gösterdim structural log
  1254. 53:07nasıl oluyor diye ama mümkün mertebe
  1255. 53:09always comp kullanın. Zaten assignile
  1256. 53:11yapabildiğiniz her şeyi always comp'la
  1257. 53:13da yapabilirsiniz. Always comp hatta
  1258. 53:14daha fazla esneklik sağlıyor. Sağladığı
  1259. 53:16esnekliklerde bu if case yapılarını
  1260. 53:19kullanmanız. E bunlar da zaten
  1261. 53:20C'dekileri yapılara benzer.
  1262. 53:33Şimdi case statement nasıl? Eee,
  1263. 53:35normalde burada bir tane daha başka bir
  1264. 53:38örnek var. Seven segment modül örneği
  1265. 53:40var. E, 4 bitlik data girişimiz var. 7
  1266. 53:43bitlik segment çıkışı var. Segment 7
  1267. 53:46bitlik sayı. Aslında bunun yaptığı şu.
  1268. 53:48Eee, ben bir decimal sayı veriyorum
  1269. 53:51burada. Şu data decimal sayı 4 bitlik.
  1270. 53:53Sonuçta 0'dan 9'a kadar ya bunu 4 bit
  1271. 53:56tutabiliyor. E 4 bitlik data. Sev
  1272. 53:59segment dediğimiz aslında bizim şöyle 7
  1273. 54:01tane eee LED ve bu sayı neyse ona
  1274. 54:05karşılık gelen mesela diyelim ki şurası
  1275. 54:07tam sıralamasını bilmiyorum ama E A B C
  1276. 54:10D E F G olsun mesela burası ona karşılık
  1277. 54:14gelen ledleri yakıyoruz. Mesela 1 yazmak
  1278. 54:16istiyorum buraya. A la B'yi yakıyorum
  1279. 54:18sadece. A la B sadece 1 oluyor. İşte 2
  1280. 54:20yapmak istiyorum mesela. F A Y D C
  1281. 54:25mesela yanıyor. Bunu yapan fonksiyon bu.
  1282. 54:28E 4 bitlik data girişi var. Deimal data
  1283. 54:32ve 7 bitlik çıkışı var burada. 7 seven
  1284. 54:35segment. O yüzden seven 7 tane let var.
  1285. 54:38Şimdi ben 0 yazmak istiyorsam şunları
  1286. 54:41yakıyorum sadece. Bu ona karşılık
  1287. 54:43geliyor. 1 yazmak istiyorsam sadece A'
  1288. 54:45la B yanıyor mesela. ona karşılık
  1289. 54:47geliyor. Şuymuş. Eee, tam burada A, B, C
  1290. 54:50benim yazdığım doğru olmayabilir ama
  1291. 54:52hangisine denk geliyorsa artık. Eee,
  1292. 54:54şimdi burada yaptığı da şu modül tanımı
  1293. 54:56var. Always combun içinde case
  1294. 54:58statement'ı kullanıyorum ve case data
  1295. 55:00neyse
  1296. 55:02şu data, bu data 4 bitlik bir data ya.
  1297. 55:05Data neyse onun karşılığı olan segment
  1298. 55:08ataması gerçekleşiyor. Yani data 0sa şu
  1299. 55:10satır çalışıyor. Data 2 ise şu satır
  1300. 55:12çalışıyor. Bu şekilde hiçbiri değilse
  1301. 55:15normalde data burada 0 la 9 arasında
  1302. 55:17olması gerekiyor değil mi? Deci
  1303. 55:18number'la diyelim ki yanlışlıkla eee
  1304. 55:21sistem yanlış çalıştı. 10 dedi. Yani 1
  1305. 55:2410 dedi. Öyle bir durumda bunların
  1306. 55:26hiçbirine girmediği için default
  1307. 55:27statement'a giriyor. Bu da default'u
  1308. 55:30çalışıyor. Yani bu ne demek? Büyük
  1309. 55:31ihtimalle hepsi sönsün demek. Yani
  1310. 55:33yanlış data geldi çünkü demek.
  1311. 55:38Yani default kullanmanız önerilir.
  1312. 55:40Default kullanmazsanız mesela ileride
  1313. 55:42gelecek örneği led oluşturabilirsiniz
  1314. 55:44yanlışlıkla.
  1315. 55:46Çünkü ya biraz bahsedeyim size. Mesela
  1316. 55:49burada default kullanmadınız diyelim.
  1317. 55:51Default yok. Öyle bir durumda bu datanın
  1318. 55:54aslında olabileceği değerler 0 1 1 ya
  1319. 55:57değil mi? Şimdi ama ben normalde bu
  1320. 56:00casein içinde 0'dan 9'a kadar olan
  1321. 56:02atamaları tanımladım. Yani segment e
  1322. 56:05mesela 0 geldiyse şu olacak. 9 geldiyse
  1323. 56:08bu olacak dedim. Bu 0' la 9 arasını
  1324. 56:10tanımladım ama bu gelecek data 0'dan
  1325. 56:1115'e kadar gelebilir. Öyle bir durumda
  1326. 56:15otomatik sentez tool şunu yapar ya der
  1327. 56:17büyük ihtimalle kullanıcı bu always
  1328. 56:19combu tanımlarken eee data 0 la 9
  1329. 56:22arasında gelirse şu değerleri atamamı
  1330. 56:24istedi ama gelmezse mesela 10 geldi
  1331. 56:26diyelim. 10 gelirse segmenti
  1332. 56:29değiştirmememi istedi diye düşünür.
  1333. 56:31Şimdi değiştirmemesini istemek ne demek?
  1334. 56:34bir leç veya flip flow kullanması
  1335. 56:35gerekiyor. Eski değerini tutması
  1336. 56:37gerekiyor. Clock da yok. Clock da
  1337. 56:39olmayınca clock da tanımlanmamış leç
  1338. 56:41kullanır devre. Segmentin eski değerini
  1339. 56:4310 geldiyse tutmak ister. O yüzden bir
  1340. 56:45default statement kullanmak sizi burada
  1341. 56:47led oluşturmaktan yanlışlıkla kurtarır.
  1342. 56:49Ya led oluşturmak da şey demek yani
  1343. 56:51mahvetmek demek. Yani led e çok dikkatli
  1344. 56:54kullanılması gereken devre elemanları. e
  1345. 56:57timingi filan tam uymuyor. O yüzden hani
  1346. 56:59buralarda mümkün mertebe ledden
  1347. 57:01kaçınmanız için default statement
  1348. 57:03tanımlamanız gerekiyor.
  1349. 57:06Burada başka bir örnek var. Priority cas
  1350. 57:09örneği var. E burada
  1351. 57:13örneğimiz ne yapıyor bizim aslında?
  1352. 57:15Priority logy'yi tanımlıyor. Eee
  1353. 57:17normalde most significant bit A4 bitlik
  1354. 57:20sinyal. Bu A4 bitlik sinyalin most
  1355. 57:23significant biti 1 ise çıktım benim 4
  1356. 57:26oluyor. Yani hangi biti bu A'nın hangi
  1357. 57:28biti 1 ise o bitin indeksini veriyor.
  1358. 57:32Yani kaçıncı bitte olduğu ya o bitin
  1359. 57:36indeks karşılığı 1 oluyor. Burada işte
  1360. 57:39A'nın most significant biti 1 ise diğer
  1361. 57:42bitlere bakma diyorum artık. O bakmayı
  1362. 57:44da case Z statement'ı veya case X
  1363. 57:47statement'ı kullanarak söyleyebiliyorum.
  1364. 57:49Yani şurada yine case bu ama şunu
  1365. 57:52diyorum. Case yerine case yazıyorum.
  1366. 57:55Casey de şunu söylüyor. Şu a girişi eee
  1367. 57:59şey diyor. A girişinin eğer son biti 1
  1368. 58:02ise e şuradakileri umursama diyor. Yani
  1369. 58:05buradakileri don't caret diyor.
  1370. 58:11Bu anlaşıldı mı arkadaşlar?

About this transcript

This page contains the full transcript of W2 SystemVerilog Part1 TR by Hasan Erdem Yantır, generated from the public captions YouTube serves with the video. The transcript has 7,463 words across 1,370 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.

What you can do with it

Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.

Free YouTube transcript tool

YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.