Bedste svar
I strukturel dataflowmodellering defineres digitale designfunktioner ved hjælp af komponenter såsom en inverter , en MUX, en adderer, en dekoder, grundlæggende digitale logiske porte osv. Det er som at forbinde og arrangere forskellige dele af kredsløb til rådighed for at implementere en funktion, du leder efter.
Implementering af halv adder ved hjælp af struktur modellering af datastrøm: input A, B; output sum, bære; xor (.in1 (A), .in2 (B), .out (sum)); og (.in1 (A), .in2 (B), .out (carry));
Modellering af adfærdsdata flow bruges til at beskrive digitale kredsløbs opførsel. Designer beskriver funktionaliteten i design ved at skrive algoritmisk type kode. Det bruges til at forklare datastrømmen ved hjælp af forskellige boolske udtryk som & (og), | (eller), ~ (inverter), ^ (xor),? (Betinget) osv … to underkategorier af denne type modellering skemaet er kontinuerlig datastrøm og proceduremæssig datastrøm.
1. Kontinuerlig datastrøm I denne type modellering af datastrømme er tildeling af data til output kontinuerlig. Dette implementeres ved hjælp af “ tildel ” udsagn i Verilog som vist i eksemplet.
input A, B; output sum, bære; wire sum, carry; tildele sum = A ^ B; assign carry = A & B;
Det er kontinuerlig tildeling, og derfor vil enhver ændring i input påvirke output med det samme, fordi fravær af kontrollerende handlinger, dvs. følsomhedsliste. Her skal outputvariabler defineres som “ wire ” -type, fordi de kontinuerligt drives af digital logik defineret på RHS.
2. Procedurel datastrøm Her udføres datatildelingerne ikke kontinuerligt i stedet for de sker på specifikke begivenheder, der er specificeret i følsomhedslisten. Denne type modelleringsskema implementeres ved hjælp af procedureblokke som “ altid ” eller “ initial “som vist i eksempel.
input A, B; output sum, bære; reg sum, carry; altid @ (A) begynder sum A + B; bære A & B; slut
RHS for alle udtryk beregnes kontinuerligt, men dets tildeling til LHS sker kun ved enhver ændring i input A, men ikke B. I dette tilfælde skal outputvariabler defineres som “ reg ” type, fordi de fortsat holder tidligere værdi, indtil ny tildeling opstår efter enhver ændring i den specificerede følsomhedsliste.
Håber, dette vil fjerne din tvivl.
Svar
Dataflyt og adfærdsmæssig eksklusion er ikke gensidigt. Data Flow and Functional eller Data Flow and Structural er heller ikke. Klassisk set beskriver “datastrøm” en arkitektur, hvor en ændring i værdi af et dataelement (variabel) automatisk udløser genberegning af alle andre data, der er afhængige af det.
Mange forkert (IMHO) klassificerer enhver arkitektur, hvor strømmen af data styres snarere end styring af strømstyring til at være “datastrøm”; men udtrykket bliver brugt på denne måde med tilstrækkelig regelmæssighed til at lade det være en alternativ definition.
Ser man på “Behavioral” design kan vi klassificere det som en designtilgang, hvor moduler er modelleret på et højt abstraktionsniveau, hvor designeren definerer den ønskede opførsel af modulet, og synteseværktøjerne nedbryder denne adfærd til enten RTL- eller strukturelle modeller. I adfærdsmodelleringsfunktion defineres algoritmisk med timing og nodeindlæsning stort set ignoreret. Det er klart, at adfærd kan modelleres således, at klassisk datastrøm tilpasses.
Mindre abstrakt er “RTL” eller Register Transfer Logic modellering. Det er her mange praktikere siger, at datastrømmen begynder. Det meste af nutidens synteseværktøjer nedbryder adfærdskode til RTL. Et godt eksempel er C (eller C ++) til RTL-værktøjer såsom ImpulseC, Cynthesizer osv.).
Mindst abstrakt er “strukturel” modellering, hvor designet angives næsten udelukkende som komponentinstansieringer med forbindelsesregistre og ledninger.
Ryd som mudder, ikke?