Beste svaret
I strukturell dataflytmodellering defineres digitale designfunksjoner ved hjelp av komponenter som en inverter , en MUX, en adderer, en dekoder, grunnleggende digitale logiske porter osv. Det er som å koble til og ordne forskjellige deler av kretsene som er tilgjengelige for å implementere en funksjoner du leter etter.
Implementering av halvmasse ved hjelp av strukturell datastrømmodellering: inngang A, B; utgangssum, bære; xor (.in1 (A), .in2 (B), .out (sum)); og (.in1 (A), .in2 (B), .out (carry));
Modellering av atferdsdata flyter for å beskrive oppførselen til digitale kretser. Designer beskriver funksjonaliteten til design ved å skrive algoritmekode. Den brukes til å forklare datastrømmen ved hjelp av forskjellige boolske uttrykk som & (og), | (eller), ~ (invertere), ^ (xor),? (Betinget) osv … to underkategorier av denne typen modellering skjemaet er kontinuerlig dataflyt og prosessuell dataflyt.
1. Kontinuerlig datastrøm I denne typen datastrømningsmodellering er tildeling av data til utgangene kontinuerlig. Dette vil bli implementert ved å bruke « tilordne » uttalelser i Verilog som vist i eksempel.
inngang A, B; utgangssum, bære; wire sum, carry; tilordne sum = A ^ B; tilordne bære = A & B;
Det er kontinuerlig tildeling, og derfor vil enhver endring i inngangen påvirke utdata umiddelbart fordi fravær av kontrollerende handlinger, dvs. følsomhetsliste. Her må utgangsvariabelen defineres som « wire » -typen fordi de kontinuerlig drives av digital logikk definert på RHS.
2. Prosedyredataflyt Her utføres ikke dataoppgavene kontinuerlig i stedet for det skjer på spesifikke hendelser spesifisert i sensitivitetslisten. Denne typen modelleringsskjema er implementert ved hjelp av prosedyreblokker som « alltid » eller « initial «som vist i eksempel.
inngang A, B; utgangssum, bære; reg sum, carry; alltid @ (A) begynner sum A + B; bære A & B; slutt
RHS for alle uttrykk beregnes kontinuerlig, men tildelingen til LHS skjer bare ved enhver endring i inngang A, men ikke B. I dette tilfellet må utgangsvariabler defineres som « reg » type fordi de holder på å holde tidligere verdi til ny oppgave skjer etter endring i spesifisert sensitivitetsliste.
Håper, dette vil fjerne tvilen din.
Svar
Dataflyt og atferdsmessig utelukker ikke hverandre. Dataflyt og funksjonell er heller ikke dataflyt og strukturell. Klassisk sett beskriver «datastrøm» en arkitektur der en verdiendring av et dataelement (variabel) automatisk utløser omberegning av alle andre data som er avhengig av det.
Mange feilaktig (IMHO) klassifiserer enhver arkitektur der datastrømmen styres i stedet for å kontrollere strømningsstyring for å være «dataflyt»; men begrepet blir brukt på denne måten med tilstrekkelig regelmessighet til å la det være en alternativ definisjon.
Ser vi på «Behavioral» design kan vi klassifisere det som en designtilnærming der moduler er modellert på et høyt abstraksjonsnivå hvor designeren definerer ønsket oppførsel til modulen og synteseverktøyene dekomponerer den oppførselen til enten RTL- eller strukturelle modeller. I atferdsmodellering er funksjon definert algoritmisk med timing og nodelasting stort sett ignorert. Det er klart at atferd kan modelleres slik at klassisk dataflyt imøtekommes.
Mindre abstrakt er «RTL» eller Register Transfer Logic modellering. Det er her mange utøvere sier at datastrømmen begynner. Det meste av dagens synteseverktøy nedbryter atferdskode til RTL. Et godt eksempel er C (eller C ++) til RTL-verktøy som ImpulseC, Cynthesizer osv.).
Minst abstrakt er «strukturell» modellering der designet er nesten utelukkende oppgitt som komponentinstansieringer med koblingsregistre og ledninger.
Klar som gjørme, ikke sant?