Showing posts with label FPGA. Show all posts
Showing posts with label FPGA. Show all posts

Thursday, April 2, 2015

Toward a Functional Overview of Thesis Development and Software Development

My being a student of electronics and computer networking, in an associates level program, and -- for some time -- a fan of free/open source Linux software platforms such as Debian GNU Linux, and broadly a fan of academic literature about computing, I understand that there is an existing body of work with regards to project management, at least insofar as with regards to software projects. My being furthermore of some experience with regards to the arts aspects of the humanities, including visual creative arts and the performing arts, I'm of a point of view that software projects are not the only kinds of projects under the sun.

Personally, I haven't encountered a lot of literature in academia, insofar as project management. I've read some little about the Capability Maturity Model (CMM), perhaps a sort of monolithic or centralized project management model, and some little about Scrum. I've not read a lot about "Extreme Programming" (XP) -- sort of an older agile project management trend, in a sense -- but I understand that it involves an iterative process. I've also read a little about the ideas management method proposed by Scott Belsky, in the book, Making Ideas Happen. Belsky's Action Method addresses more of a creative approach, juxtaposed to what one might expect that an implementation of monolithic CMM might be like, at a personal level. Of course, a large project might need a large management information system (MIS) to manage it by, entailing a certain degree of formalism throughout.

Personally -- as my being a student, at this time in my life -- I'm more interested about management methods for small-scale, original projects, rather than for projects developed under monolithic requirements. As a person of any manner of a creative bent, and a student of a technical field, with some self-managed knowledge of computer programming language, personally I'm interested in developing a project management system for small-scale thesis development projects, and for small free/open source software (FOSS) projects -- in an abstract sense, two types of project. In juxtaposition to monolithic project management methods, personally  I'm of an impression that each of a thesis type of project and a FOSS type of project might be -- in the most of which -- each managed individually, and by a small number of contributors.

To inquire, "How does a FOSS project begin?" or similarly, "How does a thesis project begin?" perhaps the Action Method might present the most readily applicable practical model for such a context -- as towards an ideas management phase of project development.

Towards a View of Idea Management

Aside to the metaphysical aspects of positive intention,  ideas are some of the raw stuff of academic work. Parenthetically, the reader is offered the author's sincerest apology for a lack of formal citation, to that effect. Perhaps the reader may agree that it is a valid assertion. Broadly, it may be a matter of philosophy -- namely, towards a relevance of ideas, in academic work -- furthermore, a practical matter of a functional application of intellect to a formal or informal task. Whether or not that may satisfy all of a model of "Left brain" and "Right brain" knowledge, perhaps it at least serves to present two juxtaposed views about -- in broad sense -- a relevance of ideas.

Aside to this thesis, the reader -- at any time -- might wish to criticize the author's style of writing, if it may serve as a convenient alternative to an addressing of any of the content of the discussion. The author has an idea that the ad hominem mode of discussion occurs in numerous forms. Inevitably, there will be another biting ad hominem criticism over my own writing. At that, I might wish to only address the topic: Philosophy.

Ideas and Theses

In a capital sense, ideas cannot be exchanged for raw currency. Thesis articles -- insofar as being works made as expressions of ideas -- thesis articles may not seem to be terribly profitable, either, not in any manner of an immediate economic sense. In a practical sense, a thesis article about barns does not in itself build a barn, though a thesis article may ever attract some manner of attention from a barn builder. In a literate society, thesis articles -- as literate works -- thesis articles are one manner of a textual medium on which ideas may be communicated.

Without any too lengthy reference to the Business Process Management Notation (BPMN), hypothetically, a model can be developed for a process of thesis article development. Certainly, thesis articles are works developed in chronologically linear manner, from a discrete "Start point" to a discrete "Stop point," at which time the work is published or filed away, if not altogether abandoned.  The process of developing a thesis paper, essentially, is a process of developing ideas, and expressing those ideas on a written medium. In that sense, it may be analogous to a development of any of other forms of prose, and forms of written verse, such as poetry.

Thesis articles, as ideal media,  thesis articles may not seem to serve any single, exacting functional role in society, except insofar as being required of some academic programs. If all of the world is a functional world, thesis articles may not seem to have any obvious relevance -- at least, outside of any manners of academic cultures as in which thesis articles would be any manner of a common fare. Ideally, even in proceeding from academic cultures in which learning itself would seem to be presupposed to be something akin to "Just press play", there may be a relevance recognized of thesis articles as discursive works, in a literary medium, works communicating ideas, and serving in further development of ideas. Hypothetically, a diagram of the ideas content of a single set of thesis works and the ideal derivatives of thesis articles may be all made in a single directed graph. In a practical sense, there is at least the bibliographical cross-reference, incidental to the actual content of individual thesis articles.

That a thesis article represents a communicative medium, in communicating ideas in a literal manner, that in itself does not describe how to write an idea down.

Presently, the linear thread of this article's textual content will diverge onto software development.

Logical Software Development

In a functional manner, a software program represents a linear application of digital data and control structures, such as to produce some manner of a functional result in a microprocessor for which the software program is compiled into machine code. Prototypically, the microprocessor is the central element of a software program, Once compiled to machine code, a software program performs a linear series of applications of digital functions and digital data shift procedures, in any number of linear, processor-level threads of execution. Excepting procedures applied for data shift, as in memory access and in transmission and receiving of data onto digital communication interfaces, the digital functions provided of a microprocessor architecture may include mathematical functions, for scalar and floating point values.

Firmware programming, as a manner of software programming -- as in an instance of FPGA programming -- firmware programming, insofar as FPGA programming, represents a configuration of circuit elements, such that those circuit elements would either produce a direct implementation of a discrete functional model, or that the circuit as implemented of an FPGA program would, itself, be a programmable element of a computer.

Insofar as that a software program and an FPGA program -- in a categorical manner -- would both represent an application of software for application of a digital system, then a certain philosophical parallel may be illustrated between the two categories, in some abstraction. Essentially, an FPGA program configures a digital machine. A software program applies a digital machine, whether a microprocessor implemented as an FPGA program or a microprocessor implemented directly in a semiconductor design.

Software programming, as a practice, would represent a work of developing of a software program. A software program, itself, represents -- essentially -- a medium for application and control of a digital system.

If there may be a single topic denoted of the stylistic qualities of applications of individual programming languages, perhaps it would be a contentious topic to develop. For instance, what manner of a Java collection class is preferred for which applications? What is the deeper meaning of a Common Lisp iterative macro? How often should C pointer arithmetic be applied? Opinions might vary.

To differentiate programming languages on a basis of programming media, broadly, there are text-based programming languages -- such as C, C++, Java, and the numerous dialects of Lisp -- and some visual programming languages -- at which topic, the author refers the reader to an article at Wikipedia: Visual Programming Language,  The author would wish to categorize the older punched--card and punched-tape programs as being some earlier text-based languages -- presumably, those not having been designed expressly for the visual qualities of the chad-betokened storage surfaces on which the historic punched-paper programs would be conveyed to their respective machines.

Again in a social context, the choice of a licensing model for a software program -- there is another possibly contentious topic, in software programming, certainly a topic much related to any number of topics in social, commercial, and legal views of a concept of software program as property.

So, this article has developed a succinct view of two distinct qualities of a software program: The programming language, and the license under which the software program is developed. Again viewing a software program as a categorical item distinct to a thesis paper, there is also the distinct quality of documentation for a software program. Consulting the FreeBSD Handbook. at a level of a view of project meta-data, a software project itself may essentially contain any one or more thesis projects, insofar as the documentation quality of a software project.

In a view of resources and resource containers, the whole set of documentation resources of a software project may not be represented singularly of any single source tree in which the software project is formally developed. That is, documentation may be available about a software project, such that the documentation is not developed by the software project developers, or at least is not contained in the same source tree as the software project itself.

Again, that is not to say how a software project is developed. It is to suggest a sense of a model of what a software project represents, in a sense of three fundamental qualities: A selection of a programming language; a software license for the content of the software program, altogether; documentation. Finally, there is the content of the software program itself -- as the software program being represented in a sense of source code or compiled code and correlated data elements -- the latter not being, expressly, "Program code," though supporting the execution of the program code, for instance as with firmware data for driving an external peripheral, or visual graphics data for the layout of a graphical program interface.

Certainly, the relevance of logic in software development, as a topic, may not be  as easily illustrated as the relevance of ideas in development of thesis articles. A software program -- as a product of a software project -- may represent a multi-faceted kind of work, including some literary work in a form of documentation.

As in order to develop a concept of a relevance of ideas in software development, a concept of topic maps may be presented.

Insofar as to answer a question, "How is a software program developed?" perhaps that may be illustrated with any single "Proof of concept." A concept of requirements, and of styles for best practice in application of any single programming language -- perhaps, again, some  contentious topics.

The concept, "For attention" may not be sufficient as a goal or a requirement for software program development. Incentive -- there, another complex and perhaps contentious quality of software program development.

Why?

If it may be possible to develop a system applying CORBA for project management, and that system support an individual, decentralized, by-in-large independent manner of management -- as in development of thesis articles and, in a separate sense, software -- of course, one would want to have determined, "What is that CORBA application going to support?" At that, of course it should be implemented with a license making a clear statement of indemnity.

#YMMV

Friday, November 14, 2014

A Short Overrview Towards EDA Tool Selections: Schematic Capture and FPGA Development

As the author being an aspiring student of mathematics and electrical engineering -- presently, studying formally in a series of sort of introductory courses affiliated with the latter discipline, electrical engineering -- the author has had something of an opportunity to develop a sense of familiarity, mostly informally, with regards to a small number of software tools such that might be denoted as Electronic Design Automation (EDA) platforms.

In the college that the author is formally a student to, the Multisim platform -- as developed by National Instruments -- is the schematic capture program that the courses apply, specifically for any laboratory assignments including a circuit schematic and not implemented in regards to introductory FPGA programming. For FPGA programming, namely as in the introductory digital logic course, the FPGA platform in use is Altera's Quartus II Web Edition.

The author not being a veteran electrical engineer, this short comment will not be accompanied with any manner of salesmanship about those specific EDA platforms. Multisim certainly presents a fairly straightforward GUI, with a simple interface for circuit simulation. Multisim implements VHDL and Verilog. Quartus II, then, is certainly one of the the available platforms for programming Altera FPGAs. Altera's Cyclone III FPGA is applied in one eSOC board, such that is used, albeit exclusively, in the single introductory digital logic course at the college. Perhaps the eSOC board might present a challenge for circuit analysis, at some time, as it's not accompanied with any sort of schematic or other design files, in its current edition.

Certainly -- regarding those specific EDA tools -- though those would be applied of any single college or university, but certainly, those may not represent the only EDA tools in the known universe.

Onto Schematic Capture and Circuit Analysis


As alternate to Multisim, there's Cadence's OrCAD Capture. OrCAD supports the Verilog and VHDL formats, OrCAD, moreover, provides support for projects applying the EDIF format, such as is latterly subsumed of ISO 10303 and the STEP model. There being a few editions of the complete OrCAD EDA platform, OrCAD Lite is the free edition -- certainly, in some features, extending free/open source software, such as the GNU Compiler Collection (GCC). Insofar as OrCAD licensing, there is -- in fact -- an educational licensing model available from Cadence, for licensing of the OrCAD platform.

For those of us whom might be approaching OrCAD as student or hobbyist, perhaps also for those whom might be approaching OrCAD as, each, an aspiring electrical engineer, Cadence publishes a wealth of documentation about the OrCAD platform, broadly:

Personally, the author became aware simply of the existence of the OrCAD platform, courtesy of Edward Brumgnach's book, i.e [Brumgnach2014] Cadence OrCAD Capture Version 16, a Primer: Circuit Analysis, Electronics, and Digital, Kindle edition. The introduction presented in [Brumgnach2014] is certainly nothing intimidating, providing an overview of the OrCAD Capture graphical user interface and a number of the fundamental features of OrCAD Capture -- such as for circuit component placement, circuit simulation, and quantitative circuit analysis using OrCAD -- all addressed in a context of DC analog circuitry. The introduction, as such, is conveyed as in parallel to a short survey of fundamental principles of the electrical sciences, focusing mainly on Ohm's Law, as likewise in regards to DC analog circuitry. A study of the significance of electrical impedance -- as with regards to a current of a varying polarity, as within a circuit of a resistive element and one or more of each of a dielectric capacitive element and an inductive element -- such a study might be left as an exercise for the reader.

Notably, perhaps, the schematics components of the design files for the BeagleBone Black platform are published in DSN format, a format supported by by OrCAD Capture.



Onto the Papilio FPGA Platform

In addition to OrCAD, specifically as with regards to FPGA projects, this web-log cordially recommends Xilinx FPGAs. In regards to evaluation boards for FPGA programming, if not also in regards to environments for study and for prototyping, Xilinx Spartan FPGAs, namely, are applied in the Papilio platform -- respectively, a Spartan 3E FPGA in Papilio One, and a Spartan 6 FPGA in Papilio Duo. For programming the Papilio platform, the ZAP IDE is available, as extending of some functionality provided specifically in Xilinx ISE Web Pack.  ISE WebPack is likewise available with a free license, as a feature of the Xilinx ISE Design Suite.

Linux may be a recommended operating system platform for applying ISE Web Pack's tools. This web-log recommends the Kubuntu Linux distribution. Linux can be installed simultaneous to a Microsoft Windows operating system, either with a dual-boot configuration, or in a virtualization platform installed to the Microsoft Windows OS -- at which, this web log recommends Virtualbox for a single-user desktop environment, and Xen  as for enterprise-scale virtualization scenarios in so much of software defined networking (SDN).

Xilinx publishes a wealth of documentation, likewise -- such as about Xilinx' Spartan FPGA products and the ISE Design Suite tools as licensed under the ISE WebPack platform and as available under other licenses for Xilinx ISE Design Suite -- for example, Tutorials about Xilinux ISE Design Suite, and User Guides as with regards to the same design platform. For applications of the ISE Web Pack tools on Linux platforms, some additional documentation is available of the Arch Linux Wiki. Certainly, in installing even so much as the Xilinux ISE WebPack edition of the ISE Design Suite platform, a broad range of features are then made available, within the containing operating system.

An introduction to digital logic, as well as the VHDL hardware definition language and FPGA programming, is available in PDF and in ASCIIDOC formats [web][github]. For general prototyping with the Papilio platform, this web log recommends the ZPUino soft processor for the Papilio FPGA platform. The Papilio board -- such as Papilio One or Papilio Duo -- when programmed with the ZPUino soft processor -- may be programmed in applications of a syntax similar to the Arduino sketch file format [Arduino] though namely in using the ZAP IDE.

Towards programming a Papilio FPGA board with the ZPUino soft processor  and then developing an initial sketch file in the ZAP IDE,  Gadget Factory publishes a convenient getting started tutorial, addressing both matters. The tutorial introduces the overall working process for programming Papilio with a soft processor -- there, using the Xilinux ISE tool and the Papilio schematic library, as published by Gadget Factory, to the matter of uploading a bit file to the FPGA board, effectively thereby installing ZPUino to the Papilio board -- followed, then, with an introduction towards programming the ZPUino soft processor with a sketch file in Zap IDE,

Towards MBSE modeling for FPGA Environments

Certainly, FPGA programming represents a broad subdomain of electrical engineering. Towards a matter of model-based systems engineering (MBSE) perhaps towards developing a sort of macro-level, object-focused analysis towards an FPGA system, this article directs the reader's attention towards the ENOSYS Tool set for FPGA systems synthesis. as published courtesy of Softeam. The ENOSYS tool set develops something of a unique view about FPGA systems programming, effectively extending the Object Management Group (OMG) specifications for the Unified Modeling Language (UML) extended then into an EDA domain. The ENOSYS toolchain effectively presents an interface onto bare metal hardware, at Falcon ML,

Towards a singular overview about the Unified Modeling Language (UML), as well as the Systems Modeling Language (SysML) and the MetaObject Facility (MOF) -- of which, in extending of the MOF meta-metamodel, as defined by the OMG, the specifications of UML and SysML are implemented, literally, as metamodels -- the  reader's attention is directed to a book published by Morgan Kaufmann in affiliation with the Object Management Group, a book by Tim Weilkeins, Systems Engineering with SysML/UML: Modeling, Analysis, Design

Disambiguation: This article does not address the ENOSYS error code, as defined in contemporary C toolchains, "Function not implemented".


Segue to "Fin," Towards Theory and Praxis

In the foundry text, PhilosophiƦ Naturalis Principia Mathematica, Isaac Newton develops a concept of a juxtaposition of geometric and mechanical views with regards to mechanical systems. Such a juxtaposition may be understood as being reified, effectively, in electrical engineering -- analogously, as with regards to models for circuits, and of physical circuits, in situ. Certainly, the history of circuit modeling extends at least so far back as to the original development of Ohm's Law, previous to so many developments in analog and digital electrical systems, and -- then furthermore -- to the origins of the contemporary Euclidean geometry.

Towards developing a sense of knowledge with regards to practical applications of mathematics and the electrical sciences, certainly resources abound, as in collections of formal, public libraries and online. Towards online resources, as with regards to theories developed in and of the electrical sciences, this article cordially recommends: Hyperphysics -- a resource published online, by the Department of Physics and Astronomy at Georgia State University.

With regards to studies of practical applications for the electrical sciences, this article recommends the online resources published by each of:

Wednesday, September 3, 2014

Compatibility Note: Xilinx ISE WebPack NOT Compatible with Microsoft Windows 8.1, MAY BE Compatible with Linux

Towards developing a prototype of MIT's 1980s-era CADR Lisp Machine design on the Papilio FPGA platform, today I'd installed Xilinx ISE WebPack on my HP TouchSmart laptop. This laptop presently runs Windows 8.1 as its primary OS. Much to my chagrin, I've since discovered that Xilinux ISE WebPack is not compatible with Windows 8, but that it may be compatible with Linux.

Someone has provided some helpful advice for installing ISE WebPack on Ubuntu, specifically. When installing Xilinux ISE WebPack from DVD, the 'xsetup' file would be located in the root directory of the DVD image, itself. Documentation about installing Linux, of course, would be available of the respective Linux distributor. "YMMV" -- Of course, I'd tried to install Linux Mint directly onto my HP laptop, without immediate success however. I'd kept a sort of simple work-log, after that endeavor. Since then, I've effectively uninstalled the item from the laptop's hard disk drive, instead installing to Virtualbox on Microsoft Windows. It runs well enough, especially when running at realtime priority, but of course it's not as efficient as a Linux installation directly to the hard disk drive would be.

My HP Laptop uses UEFI firmware, moreover -- alternate to the conventional BIOS architecture. The laptop allows for "legacy" boot configuration, such that would function in a manner similar to a BIOS boot, but with the "legacy" configuration enabled, the laptop may not be able to boot to Linux, by default.  As something of a resource, for installing Linux in a manner as that the boot-loader would be integrated with the laptop's native UEFI framework, there's a Quick Install guide for Linux on UEFI, by Roderick W. Smith


I'd written the following notes, as was previous to discovering that ISE WebPack is fully incompatible with editions of Windows 8.

During the installation process, a dialogue window has appeared, notifying me -- effectively -- that the WinPcap installation provided with the ISE WebPack installation is not compatible with Microsoft Windows 8.1. The notification dialogue has provided a web link for further information.

In short, it seems that there is a sure workaround for that software compatibility issue, namely: To install WinPcap manually, after ISE WebPack is installed. Of course, considering that the WinPcap (4.1.1) as provided with ISE WebPack is only two patchlevels older than the current WinPcap (4.1.3) and that the former installed without apparent issue, the workaround -- as such -- may not be necessary.

I'm not certain of what exactly resulted in that -- ostensibly -- helpful dialogue window having appeared. It might simply be to an inaccurate view of the installer's platform compatibility. Nonetheless, the workaround -- as such -- would be available, should not impede normal ISE WebPack functionality, and inasmuch would be advised, simply to install WinPcap manually, in its latest available version.

Even with that completed, however, the applications installed with Xilinx ISE WebPack will not run successfully under Windows 8.1.

Monday, June 2, 2014

Papilio and Xilinix FPGAs

I've recently begun to study FPGA programming, albeit through kind of an impractical program at DVUO. In a small, practical regards, the course focuses on Altera FPGAs and Altera's free and unsupported (?) Quartus II Web Edition as -- basically -- lab kit items for the course at DVUO. I constantly have to "Do some additional reading," to get anything out of the DVUO courses. Personally, I'm not studying up for "Signing off at the Blarney Stone."

In that additional reading, I have learned:

In addition to the Altera FPGA line, Xilinix also manufactures FPGAs, such as the Xilinix Spartan 3 and Spartan 6 FPGAs.

Spartan FPGAs are available in the "DIY" electronics market, on the Papilio -- alternately, ZPUino -- FPGA boards, such as the "Papilio pro".  The  software tooling for Papilio is more bear-bones than Quartus -- the former, extending on the Arduino programming toolkit.  The Papilio toolkit uses a bitfile format for direct programming of the FPGA. Papilio boards can be programmed with Papilio's ZAP IDE and the Xilinix ISE WebPack.

A Papilio board can be extended, in its hardware, with a "Wing" or "Megawing", such that essentially "plugs into" I/O headers on the Papilio circuit board.

Papilio is an open platform, and thoroughly supported for programming on Linux and on Microsoft Windows.

Ostensibly, Papilio, too, can be used to simulate a full multiplexer or demultiplexer, or alternately a single 74138 or 74148 circuit's logic profile, in today's world o' technology. We've studied the latter at DVUO -- something of some allegedly "common" integrated circuits, really difficult for this student, me, to find any applications for, or any sense of relevance about, in the regards to the industry, today. Perhaps it makes more sense in a broader circuit with clock synch, and as an artifact of an at least historic technical interest. So maybe I, too, can believe in magic beanstalks, after all -- if only those beans were just as good in an "unsmart" crock pot.

Works Consulted:
[1] http://www.xilinx.com/products/silicon-devices/fpga/spartan-6/
[2] http://papilio.cc/index.php?n=Papilio.ZPUinoIntroduction
[3] http://papilio.cc/index.php?n=Papilio.ArduinoCore
[4] https://github.com/GadgetFactory/Papilio-Loader/blob/master/xc3sprog/trunk/bitfile.h
[5] http://papilio.cc/index.php?n=Papilio.Hardware
[6] http://gadgetfactory.net/learn/2013/10/29/papilio-schematic-library-getting-started/
[7] http://gadgetfactory.net/learn/2013/10/23/install-xilinxs-free-ise-webpack/
[8] http://www.xilinx.com/products/design-tools/ise-design-suite/index.htm
[9] http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.htm